Vue2,Vue3,React三者diff算法有何区别
React diff-仅右移
Vue2- 双端比较
Vue3最长递增子序列
diff算法
- 不管是vue, 还是React, 都是数据更新之后重新生成新的vdom(虚拟DOM),两个进行对比虚拟DOM,得出一个需要更新的DOM,然后去更新,这个对比的过程就是diff算法
- diff算法很早就有,应用广泛,如github的Pull Request中的代码diff
- 如果要赶个diff两棵树,时间复杂度O (n^3),不可用
- react 和 Vue中的Tree diff优化(优化后的时间复杂度O(n^2))
- 只比较同曾几何时的, 不跨级比较
- tag不同就删除重建,不再去比较内部的细节
- 子节点通过key区分,key的重要性(写循环的时候要有key, 不写会有警告 => 因为key是深入到内部的diff 算法优化的)
总结
最大程度的去减少操作DOM树,找出那些真正的不同,把它们该怎么做就怎么做。
所以不管是Vue2,Vue3,React,不管它们的算法怎么优化,他们的核心目的只有一个,就是尽量少的去减少DOM树的 操作,找出那些不得不操作的部分,让自己的算法优化到最极致。