个人理解vue中的diff算法的执行机制

概念:将前后两个模板进行对比,将差异修补的过程(patch)。

是如何比较:是对比操作前后的DOM树的同一层级的每一个节点进行对比,然后对差异进行修补后形成全新的DOM树,最后重新渲染。

为什么v-for时,常需要加上key值:vue在处理高度复用的组件时,为避免对比时出现匹配错误的情况,为每个节点添加一个唯一标识。用于diff算法对比时识别,再到对应的位置插入节点。

那么v-for添加key值的好坏处:

优:为diff算法提供标识,形成一一对应的关系,避免重复渲染和节点错乱的情况。

劣:添加key后,会不断触发diff算法,去比对新旧节点,使其性能降低。

 

 

 

-----------------------------------------------------------------------------------------------------------------

回流和重绘:

回流:当Dom元素的尺寸、布局显示和隐藏等改变需要重新构建。这一过程为回流。没一个页面至少需要一次回流(浏览器渲染到页面时)

重绘:当Dom元素更新的属性只会影响元素的风格、外观,而对布局没有影响。(颜色,透明度等)

回流必将引起重绘。重绘不一定会影响回流。

posted @ 2021-12-23 11:29  Life_countdown  阅读(119)  评论(0)    收藏  举报