Vue2、Vue3、React 的diff 区别

diff 算法

diff 算法很早就有

diff 算法应用广泛,例如提交 github Pull Request 时,会对比当前提交代码的改动,这就是 diff

如果要严格 diff 两棵树,时间复杂度 O(n ^ 3),不可用

Tree diff 的 优化

Vue React 都是用于网页开发,基于 DOM 结构,对 diff 算法都进行了优化(或者简化)

- 只在同一层级比较,不跨层级 (DOM 结构的变化,很少有跨层级移动)

- `tag` 不同则直接删掉重建,不去对比内部细节(DOM 结构变化,很少有只改外层,不改内层)

- 同一个节点下的子节点,通过 `key` 区分

最终把时间复杂度降低到 `O(n)` ,生产环境下可用。这一点 Vue React 都是相同的。

React diff 特点 - 仅向右移动

比较子节点时,仅向右移动,不向左移动。

猜你喜欢

转载自blog.csdn.net/m0_38066007/article/details/124908291