-
vue3.0 diff算法-理解
在vue2.x中,需要对每一层DOM树进行diff算法差异匹配,(静态数据和动态数据都进行匹配)
vue3.0中,只比较添加静态标记的
例
-diff方法优化 -
vue2中的虚拟dom是进行全量的对比
-
vue3新增了静态标记(PatchFlag)
-
在与上次虚拟节点进行对比时候,只对比带有patch flag的节点
-
并且可以通过flag的信息得知当前节点要对比的具体内容
-hoistStatic 静态提升
- vue2中无论元素是否参与更新,每次都会重新创建,然后再渲染
- vue3对于不参与更新的元素,会做静态提升,只会被创建一次,在渲染时直接复用即可
-cacheHandlers 事件侦听器缓存 - 默认情况下onClick会被视为动态绑定,所以每次都会去追踪它的变化
- 但是因为是同一个函数,所以没有追踪变化,直接缓存起来复用即可