diff 算法
diff 算法用来比较新旧 DOM 树。循环遍历树结构的时间复杂度是 O(n^3),diff 的作用就是降低时间复杂度至 O(n)。
diff 原理
- 只比较同一层级,不跨级比较
- tag 不相同,则直接删掉重建,不再深度比较
- tag 和 key,两者都相同,则认为是相同节点,不再深度比较
Vue 为什么不推荐 index 作索引
diff 原理就是通过标签 type + index 作比较
比较规则:
- 新旧 VDOM key 相同
- 内容没变,复用真实 DOM
- 内容变了,生成新的真实 DOM
- key 不相同,创建新的真实 DOM