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树的 操作,找出那些不得不操作的部分,让自己的算法优化到最极致。

posted @ 2023-02-06 00:15  yiyunh  阅读(352)  评论(0)    收藏  举报