一、Vue的基本使用
1. 基本格式
(1)提供标签
(2)引入Vue.js
(3)根据Vue的语法格式,创建Vue实例对象
(4)在Vue实例对象中传入数据
{{msg}}
{{1+1+`等于2`}}
① {{}}:插值表达式。
② el:可以是选择器,也可以是获取的DOM元素对象。
③ data:是一个对象,里面存放数据。
二、 数据绑定的指令
1. 什么是指令
① 指令的本质就是自定义属性。
② Vue中指令都是以 v- 开头 。
2. v-cloak 指令
作用:v-cloak 指令可以防止页面加载时出现闪动问题。
(1)首先在style样式中为 [v-cloak] 指令添加样式。
(2)然后给 插值表达式 所在的标签,添加 v-cloak 指令。
{{msg}}
{{1+1+`等于2`}}
3. v-text 指令
① v-text指令用于将数据填充到标签中,替代了插值表达式,并且没有闪动问题。
② 不解析HTML标签,如果数据中有HTML标签会将HTML标签一并输出。
- 注意:v-text 和 v-html 都是单向绑定,数据对象上的值改变,插值会发生变化;但是当插值发生变化并不会影响数据对象的值。
4. v-html 指令
①用法和v-text 相似 , 但是他可以解析HTML标签。
② 可能有安全问题, 一般只在可信任内容上使用 v-html,永不用在用户提交的内容上。
5. v-pre 指令
① 显示原始信息,跳过编译过程。
② 跳过这个元素和它的子元素的编译过程。
③ 一些静态的内容不需要编译加这个指令可以加快渲染。
{{msg}}
6. 数据响应式
(1)数据的变化导致页面内容的变化,就叫数据响应式。
(2)数据绑定,就是将数据填充到标签中。
(3)v-once指令,使当前标签只进行一次编译,不再具有数据响应式。
7. v-model 指令
v-model 指令用于数据的双向绑定。限制在 、
- 当数据发生变化的时候,视图也就发生变化
- 当视图发生变化的时候,数据也会跟着同步变化
8. MVVM
(1)m model
- 数据层 , Vue 中 数据层 都放在 data 里面
(2)v view 视图
- Vue 中 view 即 我们的HTML页面
(3) vm (view-model) 控制器 将数据和视图层建立联系
- vm 即 Vue 的实例 就是 vm
三、v-on 事件绑定
1. v-on 指令
v-on:事件类型="具体的处理过程"
v-on:事件类型="处理函数的名称"
v-on:事件类型="处理函数的名称(参数1,参数2,$event )"
① 事件处理函数,写在vue实例对象的methods属性中。
② methods对象中的处理函数,想要获取数据必须加this,处理函数的this指向vue实例。
③ v-on:可以用 @ 代替。
参数传递说明:
① 标签只绑定 处理函数的名称 时,事件对象默认为第一个实参被传递。
②标签绑定的是 处理函数的调用 时,事件对象必须作为最后一个实参传递,并且名称必须是$event。
{{num}}
2. 事件修饰符
阻止事件冒泡:
123
阻止默认事件:
百度
3. 按键修饰符
绑定enter键:
常用的按键修饰符
.enter => enter键
.tab => tab键
.delete (捕获“删除”和“退格”按键) => 删除键
.esc => 取消键
.space => 空格键
.up => 上
.down => 下
.left => 左
.right => 右
4. 自定义按键修饰符
Vue.config.keyCodes.自定义名称 = 某个按键对应的ASCll码值
四、v-bind 属性绑定
v-bind 绑定原理:(v-text、v-html 等同理)
① 不用v-bind绑定的属性,双引号中的属性值被当做 字符串 来解析;
② v-bind绑定了属性后,双引号中的属性值被当做 变量 来解析,如果想要使用 字符串,要用 单引号包裹 起来。
1. v- bind 指令
缩写形式:v-bind:可以简写为 :
2. v-model 指令的底层原理
就是同时为input等标签,添加属性的绑定和事件的绑定。让其value值动态变化。
{{msg}}
五、v-bind 样式绑定
注意,不要给一个标签多次使用 v-bind:class 进行绑定样式!!!
1. 为class绑定对象
- 我们可以给v-bind:class 一个对象,以动态地切换class。
- 注意:v-bind:class指令添加的class样式不会覆盖原有的样式。
第一个盒子
data: {
isone: true,
istwo: true,
}
(1)标签通过v-bind绑定的class样式中,可以是一个对象,键是选择器的类名,值是data数组中的键,以is开头。
(2)data数组中,键是自定义名称,一般命名为is+选择器的类名,值是true或者false。
(3)通过控制data数组中的true或者false,动态切换标签是否添加class样式。
2. 为class绑定数组
第二个盒子
data: {
threeClass: 'three',
fourClass: 'four',
}
(1) v-bind 中支持绑定一个数组。数组中存放的是data数组中的键。
(2)data数组中,键是自定义名称,值是选择器的类名。
第一个盒子
第二个盒子
3. 对象与数组的简写形式 ( 重点 )
第一个盒子
第二个盒子
data: {
objClass: { one: true, two: true },
arrClass: ['three', 'four'],
}
① 在标签上直接传入自定义的对象名或者数组名。
② data数据中,键是自定义对象名或者数组名,值是{选择器名称:true}或者['选择器名称1','选择器名称2']。
③ 简写形式下,操作数组元素,使用数组API方法。
第一个盒子
第二个盒子
4. 数组与对象混合使用
第三个盒子
5. 为style绑定对象或存放对象的数组
① 直接在标签内写样式。如果value用到了变量,可以在此 直接使用变量。
注意: 如果没有用v-bind绑定style,则是直接style="width:100px"
第一个盒子
data: {
widthStyle: '100px',
heightStyle: '100px',
}
② 把样式放到一个对象中,标签内调用对象名。
③ 把样式放到多个对象中,标签内调用一个存放对象名的数组。
第二个盒子
第三个盒子
data: {
objStyle: {
width: '100px',
height: '100px',
backgroundColor: 'pink',
},
fontSizeStyle: {
fontSize: '30px',
},
}
第一个盒子
第二个盒子
第三个盒子
六、分支结构
只有符合条件的标签才会渲染到页面。
- v-if
- v-if-else
- v-else
- v-show
优秀
一般
不及格
我是v-show
data: { flag: true, score: 75 }
我是v-if
优秀
一般
不及格
我是v-show
2. v-show 和 v-if的区别
(1)v-show本质就是标签display设置为none,控制隐藏
- 如果标签元素需要反复进行显示与隐藏,使用v-show。
- v-show只编译一次,后面其实就是控制css,而v-if不停的销毁和创建,故v-show性能更好一点。
(2)v-if是动态的向DOM树内添加或者删除DOM元素
- v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件
七、循环
1. 循环数组
{{item.name}}
{{item.age}}
data: {
star: [
{id:1, name: '王祖贤', age: 18 },
{id:2, name: '吴彦祖', age: 19 },
{id:3, name: '吴磊', age: 22 },
]
}
item:数组元素。名称自定义。
index:元素的索引号。名称自定义。
2. 遍历对象
{{value+key+index}}
data: {
star: {
name: '吴磊',
age: 22,
hobby: '吃',
},
}
value: 键。
key:值。
index:索引号。
3. v-bind:key
给每个节点添加一个唯一标识。