Diff算法
尝试找到新旧VNode的最小改变量,diff的过程就是调用patch函数的过程,比较新旧节点,一边比较一边给真实DOM打补丁
比较方式
在采用diff算法比较新旧节点的时候,比较只会在同层级进行,不会跨层级比较
难点
假设一个
原则:尽可能让匹配之后的修改复杂度小(例如
设计
比较重要的VNode属性:
export default class VNode {
......
: string | number | void, // key值,被当作节点的标志,不同的key被认为一定是不同的节点
key: string | void, // 标签名
tag }
Step.1:在匹配时,对首尾两侧的相同节点进行猜测和判断
Step.2:对于剩下的没匹配上的
Step.3:现在一定有