个人理解vue中的diff算法的执行机制
概念:将前后两个模板进行对比,将差异修补的过程(patch)。
是如何比较:是对比操作前后的DOM树的同一层级的每一个节点进行对比,然后对差异进行修补后形成全新的DOM树,最后重新渲染。
为什么v-for时,常需要加上key值:vue在处理高度复用的组件时,为避免对比时出现匹配错误的情况,为每个节点添加一个唯一标识。用于diff算法对比时识别,再到对应的位置插入节点。
那么v-for添加key值的好坏处:
优:为diff算法提供标识,形成一一对应的关系,避免重复渲染和节点错乱的情况。
劣:添加key后,会不断触发diff算法,去比对新旧节点,使其性能降低。
-----------------------------------------------------------------------------------------------------------------
回流和重绘:
回流:当Dom元素的尺寸、布局显示和隐藏等改变需要重新构建。这一过程为回流。没一个页面至少需要一次回流(浏览器渲染到页面时)
重绘:当Dom元素更新的属性只会影响元素的风格、外观,而对布局没有影响。(颜色,透明度等)
回流必将引起重绘。重绘不一定会影响回流。

浙公网安备 33010602011771号