React-diff原理

传统 diff 算法的复杂度为 O(n^ 3),显然这是无法满足性能要求的。React 通过制定一个特定的策略,将 O(n^3) 复杂度的问题转换成 O(n) 复杂度的问题。依次分为以下三个步骤:

  • tree diff。同层对比
  • component diff。整体性
  • element diff。插入/移动/删除,借助 key 尽可能复用(只做移动)
    • 用 key 来构建一个老节点的 map,复用一个后要从 map 里删除
    • lastPlacedIndex 表示最后一个不需要移动的节点的索引。移动时的原则是尽量少量的移动,如果必须有一个要动,新地位高的不动,新地位低的动

vue

vue 的 diff 算法是基于 snabdom,参考

vue2 双端 diff

  • 开始遍历时,首先依次进行头头、尾尾、头尾、尾头对比
  • 从两端向中间遍历,当指针交叉的时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值