Vue 2 diff 算法

发布于 2023-05-04 19:27:47 字数 469 浏览 61 评论 0

  1. 同层比较,首先是判断节点是否是相同节点,通过节点类型和 key 值比较,相同则进行更新,不同直接删除替换
  2. 如果都是文本节点,直接替换文本。新旧分别为元素节点和文本节点,则执行对应的删除和更新操作,如果都是元素节点,且都有 children 时,开始比较 children
  3. 使用双端 diff 更新 children
    • 两端相同则直接更新
    • 旧开始 等于 新结束,则移动旧的开始节点到旧的结束节点
    • 就结束等于新开始,则移动旧的结束到开始节点
    • 都不相等,则从旧的节点中找到新开始的节点,有则更新和移动,无则创建新的 vnode,进行插入
    • 遍历完成后,如果新节点还没遍历完,则将剩余节点添加到 DOM 中
    • 如果旧节点还未遍完,则删除相关旧的节点
  1. 同层比较,同类型比较
  2. 找出移动的节点

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

蓝海似她心

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

qq_eQNo9e

文章 0 评论 0

内心旳酸楚

文章 0 评论 0

mb_BlPo2I8v

文章 0 评论 0

alipaysp_ZRaVhH1Dn

文章 0 评论 0

alipaysp_VP2a8Q4rgx

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文