美文网首页
Vue.js - day01

Vue.js - day01

作者: 一人创客 | 来源:发表于2020-08-13 21:14 被阅读0次

Vue.js - day01

插件推荐

vue官方推出的插件,高亮,一些提示

1561855247929.png

vue的代码提示

框架的学习方式

  1. 没有速成
  2. 官方文档是好朋友
    1. 很多问题,很多细节,很多面试题文档里面都有
  3. 文档的阅读方式
    1. 起步
    2. api
  4. 尝试:官网中的实例代码很多都是可以直接运行的,不要怕,不要怂,试一下
  5. 顺应框架的使用方式:
    1. 很多自己的约定,自己规则
    2. 遵守约定

Vue.js是什么

官网地址

  1. 框架
  2. 让开发人员从dom操纵中解放出来,可以专注于逻辑,专注于数据
    1. 早期:获取dom元素,操纵他们
    2. 现在:修改数据,Vue自动的去操纵dom元素

Vue基本使用

传送门

  1. 导包
  2. 用包
  3. art-template有点类似

注意点

  1. el:后面的选择器建议用id
  2. el:后面一定不能写bodyhtml
  3. data:中
    1. 字符串
    2. 数组
    3. 对象
    4. .. js中支持的类型都可以写
  4. Vue的使用需要new Vue
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})
  1. 固定的东西
    1. new Vue
    2. el:
    3. data:

v-text指令

传送门

替换文本

<span v-text="msg"></span>
<!-- 和下面的一样 -->
<span>{{msg}}</span>
  1. v-text写法会直接替换标签内部的所有内容,比较暴力
  2. {{Mustache}}写法只会替换挖坑的地方,比较温和,使用频率最高
    1. 可以叫 胡子语法
    2. 也可以叫做 差值表达式

v-html指令

传送门

  1. 替换元素的 innerHTML,全部替换
  2. 标签元素会被解析
  3. 普通元素,直接设置文本
  4. 不能简写
  5. 适应频率,相比于v-text
<div v-html="html"></div>

v-on指令

基本使用

详细说明

  1. 复杂写法v-on:事件名='逻辑'
  2. 简化写法@事件名='逻辑'
  3. 抽取为方法
    1. @事件名='方法名'
    2. new Vue的时候写methods:{ 方法(){} }
    3. 方法中如果要操纵数据,必须用this点出来才可以
  4. 数据只要改变,页面自动改变,Vue内部偷偷的把数据和页面关联起来

高级使用(目前了解)

修饰符

  • .stop - 调用 event.stopPropagation()
  • .prevent - 调用 event.preventDefault()
  • .capture - 添加事件侦听器时使用 capture 模式。
  • .self - 只当事件是从侦听器绑定的元素本身触发时才触发回调。
  • .{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。
  • .native - 监听组件根元素的原生事件。
  • .once - 只触发一次回调。
  • .left - (2.2.0) 只当点击鼠标左键时触发。
  • .right - (2.2.0) 只当点击鼠标右键时触发。
  • .middle - (2.2.0) 只当点击鼠标中键时触发。
  • .passive - (2.3.0) 以 { passive: true } 模式添加侦听器

变种写法

<!-- 方法处理器 -->
<button v-on:click="doThis"></button>

<!-- 动态事件 (2.6.0+) -->
<button v-on:[event]="doThis"></button>

<!-- 内联语句 -->
<button v-on:click="doThat('hello', $event)"></button>

<!-- 缩写 -->
<button @click="doThis"></button>

<!-- 动态事件缩写 (2.6.0+) -->
<button @[event]="doThis"></button>

<!-- 停止冒泡 -->
<button @click.stop="doThis"></button>

<!-- 阻止默认行为 -->
<button @click.prevent="doThis"></button>

<!-- 阻止默认行为,没有表达式 -->
<form @submit.prevent></form>

<!--  串联修饰符 -->
<button @click.stop.prevent="doThis"></button>

<!-- 键修饰符,键别名 -->
<input @keyup.enter="onEnter">

<!-- 键修饰符,键代码 -->
<input @keyup.13="onEnter">

<!-- 点击回调只会触发一次 -->
<button v-on:click.once="doThis"></button>

<!-- 对象语法 (2.4.0+) -->
<button v-on="{ mousedown: doThis, mouseup: doThat }"></button>

vue实例中的this

vue实例中的this
  1. new Vue的时候传入的对象是实参

  2. Vue构造函数内部会去解析数据,比如data最终直接设置给Vue实例

  3. 而methods中的方法 this就是Vue实例

    1. data的值已经直接设置上去了,所以直接this.info,this.num就可以访问数据
  4. 注意点:

    1. 写方法的时候,可以用箭头函数吗

      传送门

      1. 不可以
      2. 如果用了this会变成window
      3. 箭头函数在创建时,this会跟上一级作用域中this绑定,并且不能改变

v-bind指令

传送门

  1. 属性绑定

    1. 写在标签内部的值:class,src,style,width,height,title,disabled(表单元素启用禁用)...

    2.标准写法v-bind:属性名=xxx

    3.简化写法:属性名=xx(使用频率高)

    4.绑定的值改变了,页面自动更新

    高级写法(有印象即可)

    有各种变种写法,要有点印象,用到那个,讲解那个!!!

    <!-- 绑定一个属性 -->
    <img v-bind:src="imageSrc">
    
    <!-- 动态特性名 (2.6.0+) -->
    <button v-bind:[key]="value"></button>
    
    <!-- 缩写 -->
    <img :src="imageSrc">
    
    <!-- 动态特性名缩写 (2.6.0+) -->
    <button :[key]="value"></button>
    
    <!-- 内联字符串拼接 -->
    <img :src="'/path/to/images/' + fileName">
    
    <!-- class 绑定 -->
    <div :class="{ red: isRed }"></div>
    <div :class="[classA, classB]"></div>
    <div :class="[classA, { classB: isB, classC: isC }]">
    
    <!-- style 绑定 -->
    <div :style="{ fontSize: size + 'px' }"></div>
    <div :style="[styleObjectA, styleObjectB]"></div>
    
    <!-- 绑定一个有属性的对象 -->
    <div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>
    
    <!-- 通过 prop 修饰符绑定 DOM 属性 -->
    <div v-bind:text-content.prop="text"></div>
    
    <!-- prop 绑定。“prop”必须在 my-component 中声明。-->
    <my-component :prop="someThing"></my-component>
    
    <!-- 通过 $props 将父组件的 props 一起传给子组件 -->
    <child-component v-bind="$props"></child-component>
    
    <!-- XLink -->
    <svg><a :xlink:special="foo"></a></svg>
    

Demo-计数器

1561862280876.png

实现步骤

  1. +和-使用v-on绑定点击事件
  2. 中间区域使用v-text, data中定义一个数字num
  3. +和-
    1. num=10, +不能用
      1. 灰:disabled
      2. ××:样式
      3. 可以写逻辑表达式
    2. num=0 , -不能用

注意点

  1. v-bind中可以写data中属性值,也可以写表达式
  2. 当data中的数据改变了,页面中所有和数据相关联的地方,都会改变
    1. 也是现在比较流行的开发方式

Demo-图片切换

1561863076198.png

实现步骤

  1. 点击上一张 和下一张 v-on:click
  2. 切换图片的值:v-bind:src
  3. data:图片地址数组 ,及索引
  4. 边界判断

注意点

  1. 逻辑比较复杂不建议写行内,建议抽取为方法
  2. 这里的逻辑和轮播图类似,除了不能自动
    1. 自动:setInterval

表单输入绑定 v-model

传送门

  1. data中定义一个属性
  2. 表单元素中v-model指定指定这个属性
  3. 修改表单元素的值时,这个属性会同步更新
  4. 如果直接修改属性的值
    1. v-model的表单元素会改变
    2. 使用属性的地方,同步更新

v-model(双向数据绑定)基本使用

双向的含义

1561864788566.png
  1. 方向1:表单元素的 value改变,message同步改变
  2. 方向2:message改变,表单元素的value同步改变

v-for指令

传送门

  1. v-for="item in 遍历的属性"
    1. item 每一项 (可以改)
  2. 数组的长度改变,页面会同步更新
  3. 如果数组的每一项是对象,可以通过点语法去获取内容

Demo-记事本

1561866363011.png

561855238289.png)

实现步骤

  1. 文本框输入内容,点击回车页面中多一条数据
    1. v-model:表单元素的值和data中的属性关联起来
    2. keyup:keycode==13 代表回车
      1. @keyup.enter
      2. @keyup.13
      3. 触发的按键是 回车
    3. v-for 结合data中定义数组noteList
  2. 双击删除点击的这一项
    1. v-on:dblclick
    2. 点击的时候获取当前这一项的索引
      1. 遍历时,可以获取索引的
      2. v-for="(item, index) in items"
        1. item 每一项 可以改
        2. index 索引 可以改

注意点

  1. v-model会吧表单元素的value和data中的属性关联
  2. v-for可以结合数组遍历,前提是你得有数组
  3. 事件绑定时,可以传入参数,
    1. methods定义的时候要接收
  4. v-for可以获取下标(item,index) in noteList
    1. item,index可以改

v-if指令

传送门

  1. v-if 根据表达式的值,决定元素是否显示
    1. 真 显示
    2. 假不显示
  2. v-else-if:elseif类似的 必须要跟在if的后面
  3. v-else:else类似的 必须要跟在if的后面
  4. v-if直接用多一些,后面跟上elseif及else用的不多

v-show指令

传送门

  1. 语法v-show="表达式"
    1. true:显示
    2. false:隐藏

v-if&v-show对比

两者对比

  1. v-show 隐藏是display:none
    1. 性能消耗小:频繁切换用show
  2. v-if 隐藏 从dom树中移除
    1. 性能消耗大:不频繁用if

语法细节

const app = new Vue({
    el:"",
    data:{},
    methods:{}
})
Vue
el
data
methods
固定的

下面的明天讲解哈

Demo-天气预报

Demo-聊天机器人

v-cloak指令

传送门

基本使用

v-once指令

传送门

v-pre指令

传送门

补充

箭头函数的this

相关文章

网友评论

      本文标题:Vue.js - day01

      本文链接:https://www.haomeiwen.com/subject/ddgidktx.html