kaiyun官方网站 一文带你透顶惩处Diff算法
[[420540]]
一、基础
Diff算法完满的是最小量更新杜撰DOM。这句话诚然轻便kaiyun官方网站,然则触及到了两个中枢身分:杜撰DOM、最小量更新。
1.杜撰DOM杜撰DOM指的等于将真确的DOM树构造为js对象的口头,从而解决浏览器操作真确DOM的性能问题。
举例:如下DOM与杜撰DOM之间的映射干系
2.最小量更新Diff的用途等于在新老杜撰DOM之间找到最小更新的部分,从而将该部分对应的DOM进行更新。
二、统共历程Diff算法果真很好意思,统共历程如下图所示:
最初相比一下新旧节点是不是吞并个节点(可通过相比sel(领受器)和key(独一瑰丽)值是不是疏通),不是吞并个节点则进行暴力删除(注:先以旧节点为基准插入新节点,然后再删除旧节点)。 要是吞并个节点则需要进一步相比绝对疏通,不作念处理
新节点实质为文本,告成替换完事
新节点有子节点,这个时代就要仔细有计划一下了:若老节点莫得子元素,则告成清空老节点,将新节点的子元素插入即可;若老节点有子元素则就需要按照上述的更新战略老惩处了(记取更新战略,又不错吹好几年了,666666)。
三、实战光说不练假把式,底下告成输出diff算法的中枢实质。
3.1 patch函数Diff算法的进口函数,主要判断新旧节点是不是吞并个节点kaiyun官方网站,然后交由不同的逻辑进行处理。
export default function patch(oldVnode, newVnode) { // 判断传入的第一个参数,是DOM节点仍是杜撰节点 if (oldVnode.sel === ''