v-for更新时是如何操作DOM的?

循环出新的虚拟DOM结构, 和旧的虚拟DOM结构对比, 尝试复用标签就地更新内容

1.什么是虚拟DOM ?

虚拟DOM本质是保存节点信息, 属性和内容的一个JS对象

 

2.为什么存储虚拟DOM?

因为真实DOM属性过多遍历耗时

3.虚拟DOM好处?

虚拟DOM的存在就是提高DOM更新的性能, 不用频繁操作真实DOM, 在内存中找到变化部分, 再更新真实DOM。

4.diff算法

浏览器渲染真实DOM的消耗是很大的,当我们修改了某个数据时,如果直接渲染到真实DOM上会引起整个dom树的重绘和重排,导致更新性能很低,用户体验很差,diff算法的过程是根据新旧DOM在内存中比较变化部分, 然后给真实DOM打补丁。

①同级比较根元素变化,整个dom树删除重建

 ②同级比较根元素不变,属性改变更新属性

5.v-for的key属性作用

①无key时最大限度尝试就地修改/复用相同类型元素,就地更新内容

 

②有key且值为索引时,先产生新旧虚拟DOM, 根据key比较, 还是就地更新

有key且值是唯一不重复的字符串或数字,基于key的来比较新旧虚拟DOM, 插入新的key元素或移除key不存在元素,不改变其他元素的内容

 

在使用v-for指令时,key属性值有id用id, 无id用索引,好处是可以配合虚拟DOM提高更新的性能

小结:

diff算法如何比较新旧虚拟DOM?

根元素改变——删除当前DOM树重新建

根元素未变——属性改变——更新属性

根元素未变——子元素/内容改变——无key – 就地更新 / 有key – 按key比较

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值