图解Vue3的Diff算法

关注公众号"知之洲"可以阅读本文全篇和其他优质干货。

原因

如果不进行对比,每次更新的时候都先卸载旧节点,然后挂载新节点,每次卸载或挂载都会造成页面重排,浪费性能,因此需要进行一些细粒度的操作,最好找到所有不同点,根据这些不同点进行细粒度的按需同步。可以从以下三个地方入手:

  1. 找到对相同的节点。(复用)
  2. 找出需要新增的虚拟DOM。(创建并插入)
  3. 元素发生位置变化,找出哪些元素需要移动。(移动)
调用时机

修改响应式属性会重新执行render函数,返回新虚拟DOM。这时候会调用patch对比新旧虚拟DOM,并返回一个patch对象,用来存储两个节点不同的地方,最后根据patch对象去更新DOM。

调用patch对比新旧虚拟DOM的时候,如果双方子级都为数组的情况下(具有多个子级节点)就会调用patchChildren方法,patchChildren方

相关推荐

  1. vuediff算法

    2024-04-29 11:12:02       31 阅读
  2. Vuediff算法总结

    2024-04-29 11:12:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 11:12:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 11:12:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 11:12:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 11:12:02       20 阅读

热门阅读

  1. 【机器学习与流体力学交叉领域的期刊】

    2024-04-29 11:12:02       10 阅读
  2. 机器人抓取综述

    2024-04-29 11:12:02       12 阅读
  3. NDK 入门(四)—— 静态缓存与 Native 异常

    2024-04-29 11:12:02       12 阅读
  4. css代码的定位及浮动

    2024-04-29 11:12:02       10 阅读
  5. 【c++】【贪心】排队接水

    2024-04-29 11:12:02       13 阅读
  6. 算法:不同的二叉搜索树

    2024-04-29 11:12:02       9 阅读
  7. springboot全局处理sql异常

    2024-04-29 11:12:02       7 阅读