携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情 >
1、 v-if 和 v-show 的区别及使用场景
1) v-show就是控制元素的display属性来控制显隐,且dom元素保留;而v-if是条件判断,为真元素渲染,为假元素销毁,若初始条件为假则不渲染,第一次条件变为真的时候才局部编译
2) v-show首次渲染开销大,v-if切换开销大
3) v-show适用于元素频繁切换的场景,v-if适合运营条件不大改变的场景
2、 v-if 和 v-for 的优先级及原因
1) v-for优先于v-if被解析
2) 不能一起使用,即使v-if条件为假,v-for也会将数据渲染,定义computed属性过滤数据拿出新数组来渲染
3、 key 的作用
1) key是为了更高效的更新虚拟dom
2) 渲染组件是,key是唯一标识,判断两个节点是否为同一个的必要条件,如果没有的话,vue会认为比较的两个节点是同一个,会导致频繁更新元素,影响性能
3) vue判断两个节点是否相同主要判断key和元素类型,如不设置key,他的值就是undefined,可能会认为是相同节点,造成大量dom更新操作
4、 Mvvm
Model-view-viewmodel。试图模型mvvm的核心,它是连接iew和model的桥梁,模型指后端传输的数据,视图指所看到的页面
两个方向
一是将模型转化为视图,即将后台传输的数据转化成所看到的页面,实现方式是:数据绑定
二是将视图转化为模型,即将所看到的页面转化成后端的数据,实现方式是:dom时间监听
这两个方向都实现的,称之为数据双向绑
5、 v-model 的实现原理
1) v-model主要实现view层输入值影响data的属性值,data值发生改变会更新view的数值变化
2) 实际上绑定了value值和input、change事件
model层通过definedProperty来劫持每个属性,一旦监听到变化通过相关的页面元素更新。另一方面通过编译模板文件,为控件v-model绑定input事件,从而页面输入能实时更新相关data的值
6、 v-model 和 . sync 的区别
1) v-model针对的最终操作结果,是value,是双向绑定的结果,是change操作;如input等
2) .sync针对的是状态,status,是update操作;如loading的状态,树结构展开等操作
3) 例外情况,组件只有一个功能是切换状态的时候,这个状态就是最终值,此时v-model可以替换sync
如果有哪里描述不准确或者有问题,欢迎大佬指正!
(≖ᴗ≖)✧