你怎么理解vue中的diff算法
2021-09-20 20:54:34 大约 1 分钟
这里先说明下:diff算法是虚拟DOM技术的必然产物,它不是vue专用。
我感觉可以从3个角度来理解diff算法:
必要性
- 在vue中视图要想得到更新,有两种方式,一种是比较暴力的直接覆盖,另一种是只更新状态变化的地方,那么这显然就需要一个算法来找出那么需要更新的地方。
执行方式
- 在vue中为了降低Watcher粒度,数据的监听是组件级别的,vue在进行比对的时候有一个整体策略:深度优先,同层比较,两个节点之间比较会根据它们是否拥有子节点或者文本节点做不同操作;但是比对想要精确就必然需要一套也就是算法,通过算法来进行dom比对从而找出那些需要更新的节点进行视图更新。
高效性
diff算法的直接操作对象是js,js的执行速度远高于直接操作dom元素。
diff算法有一套自己的比对优化策略,可以更高效去找出那些需要更新的地方。