1.vue中key的作用
-
v-if 中使用 key
由于 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。因此当我们使用 v-if 来实现元素切换的时候,如果切换前后含有相同类型的元素,那么这个元素就会被复用。如果是相同的 input 元素,那么切换前后用户的输入不会被清除掉,这样是不符合需求的。因此我们可以通过使用 key 来唯一的标识一个元素,这个情况下,使用 key 的元素不会被复用。这个时候 key 的作用是用来标识一个独立的元素。
-
v-for 中使用 key
用 v-for 更新已渲染过的元素列表时,它默认使用 “ 就地复用 ” 的策略。如果数据项的顺序发生了改变, Vue 不会移动 DOM 元素来匹配数据项的顺序,而是简单复用此处的每个元素。因此通过为每个列表项提供一个 key 值,来以便 Vue 跟踪元素的身份,从而高效的实现复用。这个时候 key 的作用是为了高效的更新渲染虚拟 DOM 。
2.双向数据绑定(mvvm模式)
通过ViewModel把视图UI和数据逻辑分开,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时把Model的数据同步到View显示出来,还负责把View的修改同步回Model
-
优点
开发解耦,可以使前台Model和View开发分开。并使前台开发不那么依赖后台数据。
-
缺点
需对每个Controller实现绑定。
3.computed和watch的区别及使用场景
-
computed:
当一个属性受多个属性影响的时候就需要用到computed,支持缓存,不支持异步。
常用场景: 购物车商品结算的时候
-
watch:
当一条数据影响多条数据的时候就需要用watch,不支持缓存,支持异步。
常用场景:实时搜索数据。