目录
vue 的两个特性
数据驱动视图:
双向数据绑定:
3.vue的基本使用
vue 指令
1. 内容渲染指令(v-text,{{ }},v-html)
2. 属性绑定指令(v-bind:,简写 :)
绑定样式
2.1. class样式写法:
2.2. style样式
3.事件绑定指令(v-on:,简写 @)
3.1事件对象$event
3.2事件修饰符:
3.3按键修饰符:(@keyup.esc,@keyup.enter)
4.双向绑定指令(v-model)
4.1v-model的修饰符(.number,.trim,.lazy)
5.条件渲染指令(v-if,v-else,v-else,v-show,)
5.1.v-if 和v-show 的区别
6.列表(循环)渲染指令(v-for)
6.1key 的注意事项
6.2 label的for属性
6.3key的内部原理
7.v-cloak指令(防止闪现, 与 css 配合: [v-cloak] { display: none })
8.v-once指令(初次动态渲染后不再改变)
9.v-pre指令(被该指令用的vue不会去解析它)
列表案例
Vue中的数据代理
1.Object.defineProperty方法
2.数据代理:通过一个对象代理对另一个对象中属性的操作
3.Vue的数据代理
Vue的数据监测
1. vue会监视data中所有层次的数据。
2. 如何监测对象中的数据?
3. 如何监测数组中的数据?
4.在Vue修改数组中的某个元素一定要用如下方法:
数据的变化会驱动视图自动更新
好处:程序员只管把数据维护好,那么页面结构会被 vue 自动渲染出来!
在网页中,form 表单负责采集数据,Ajax 负责提交数据。
js 数据的变化,会被自动渲染到页面上
页面上表单采集的数据发生变化的时候,会被 vue 自动获取到,并更新到 js 数据中
注意:数据驱动视图和双向数据绑定的底层原理是 MVVM(Mode 数据源、View 视图、ViewModel 就是 vue 的实例)
ViewModel 作为 MVVM 的核心 ,是它把当前页面的 数据源 ( Model )和 页面的结构 ( View )连接在了一起。当 数据源发生变化 时,会被 ViewModel 监听到, VM 会根据最新的数据源 自动更新 页面的结构当 表单元素的值发生变化 时,也会被 VM 监听到, VM 会把变化过后最新的值 自动同步 到 Model 数据源中
{{username}}
v-text
指令的缺点:会覆盖元素内部原有的内容!
{{ }}
插值表达式:在实际开发中用的最多,只是内容的占位符,不会覆盖原有的内容!
v-html
指令的作用:可以把带有标签的字符串,渲染成真正的 HTML 内容!
性别:
姓名:{{username}}
性别:{{gender}}
{{info}}
注意:插值表达式只能用在元素的内容节点中,不能用在元素的属性节点中!
在 vue 中,可以使用 v-bind:
指令,为元素的属性动态绑定值;
简写是英文的 :
在使用 v-bind 属性绑定期间,如果绑定内容需要进行动态拼接,则字符串的外面应该包裹单引号,例如:
这是一个 div
1+2的结果是:{{1+2}}
{{ tips }}反转后的结果是:{{ tips.split('').reverse().join('')}}
这是一个div
class="xxx" xxx可以是字符串、对象、数组。
字符串写法适用于:类名不确定,要动态获取。
:style="{fontSize: xxx}"其中xxx是动态值。
:style="[a,b]"其中a、b是样式对象。
data:{
name:'迪丽热巴',
mood:'normal',
classArr:['atguigu1','atguigu2','atguigu3'],
classObj:{
atguigu1:false,
atguigu2:false,
},
styleObj:{
fontSize: '40px',
color:'red',
},
styleObj2:{
backgroundColor:'orange'
},
styleArr:[
{
fontSize: '40px',
color:'blue',
},
{
backgroundColor:'gray'
}
]
},
v-on:
简写是 @
语法格式为:
methods: {
add() {
// 如果在方法中要修改 data 中的数据,
//可以通过 this 访问到
this.count += 1
}
}
count 的值是:{{count}}
$event
的应用场景:如果默认的事件对象 e 被覆盖了,则可以手动传递一个 $event。例如:
methods: {
add(n, e) {
// 如果在方法中要修改 data 中的数据,可以通过 this 访问到
this.count += 1
}
}
count的值是:{{count}}
.prevent
链接
.stop
用户的名字是:{{username}}
+={{n1+n2}}
这是被v-if控制的元素
这是被v-show控制的元素
优秀
良好
一般
差
索引
ID
姓名
{{index}}
{{item.id }}
{{item.name}}
for的值等于checkbox的id属性进行绑定,可以实现点击标签label也能改变checkbox状态
面试题:react、vue中的key有什么作用?(key的内部原理)
1. 虚拟DOM中key的作用:
key是虚拟DOM对象的标识,当数据发生变化时,Vue会根据【新数据】生成【新的虚拟DOM】,
随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较,比较规则如下:
2.对比规则:
(1).旧虚拟DOM中找到了与新虚拟DOM相同的key:
(2).旧虚拟DOM中未找到与新虚拟DOM相同的key
创建新的真实DOM,随后渲染到到页面。
3. 用index作为key可能会引发的问题:
4. 开发中如何选择key?:
本质是一个特殊属性,Vue实例创建完毕并接管容器后,会删掉v-cloak属性。
使用css配合v-cloak可以解决网速慢时页面展示出{{xxx}}的问题。
{{name}}
初始化的n值是:{{n}}
当前的n值是:{{n}}
Vue其实很简单
当前的n值是:{{n}}
品牌列表案例
添加品牌
#
品牌名称
状态
创建时间
操作
{{ item.id }}
{{ item.name }}
{{ item.time }}
删除