如果不做优化的话,原diff算法需要经过新旧vdom遍历以及排序,时间复杂度则为
O
(
n
3
)
O(n^{3})
O(n3)
这属于一个不可用的时间复杂度。那么,做了哪些优化呢?查看vue源码可以得出
- 只比较同一层级,不跨级比较
- tag不相同,则会直接删除重建,不再深度比较
- tag和key都相同,则认为其为相同节点,不再深度比较
注意key的作用,在这里也是很明显看出为什么在进行v-for遍历的时候需要使用key