VUE中虚拟dom和Diff算法

什么是虚拟DOM?
虚拟 DOM 就是为了解决浏览器性能问题而被设计出来的。

1.为开发效率提供方便

2.进行最小的dom操作,提高执行效率

虚拟的DOM的核心思想是:
对复杂的文档DOM结构,提供一种方便的工具,进行最小化地DOM操作。

这句话,也许过于抽象,却基本概况了虚拟DOM的设计思想:

(1) 提供一种方便的工具,使得开发效率得到保证

(2) 保证最小化的DOM操作,使得执行效率得到保证

虚拟DOM优点
Vistual DOM可以将多个改动合并成一个批量的操作,从而减少了DOM重排的次数,进而缩短了生成渲染树和绘制所花的时间

什么是虚拟DOM的Diff算法?
虚拟DOM中,在DOM的状态发生变化时,虚拟DOM会进行Diff运算,来更新只需要被替换的DOM,而不是全部重绘。
在Diff算法中,只平层的比较前后两棵DOM树的节点,没有进行深度的遍历。

diff 算法包括几个步骤:

用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档中

当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异

把所记录的差异应用到所构建的真正的DOM树上,视图就更新了。

注意
1.如果节点类型改变,直接将旧节点卸载,替换为新节点,旧节点包括下面的子节点都将被卸载,如果新节点和旧节点仅仅是类型不同,但下面的所有子节点都一样时,这样做也是效率不高的一个地方。
2.节点类型不变,属性或者属性值改变,不会卸载节点,执行节点更新的操作。
3.文本改变,直接修改文字内容。
4.写代码时,如果没有给数组或枚举类型定义一个key,就会采用粗暴算法。
如果为元素增加key后,Vue就能根据key,直接找到具体的位置进行操作,效率比较高。

在v-for中提供key,一方面可以提高性能,一方面也会避免出错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值