当前位置: 首页 > news >正文

diff算法

vue的diff算法详解

vue:

diff 算法是一种通过同层的树节点进行比较的高效算法

其有两个特点:

比较只会在同层级进行, 不会跨层级比较
在diff比较的过程中,循环从两边向中间比较
diff 算法在很多场景下都有应用,在 vue 中,作用于虚拟 dom 渲染成真实 dom 的新旧 VNode 节点比较

React之Diff 算法

react

在render阶段的beginWork函数中,会将上次更新产生的 Fiber 节点与本次更新的 JSX 对象(对应ClassComponent的this.render方法返回值,或者FunctionComponent执行的返回值)进行比较。根据比较的结果生成workInProgress Fiber,即本次更新的 Fiber 节点。即,React 将上次更新的结果与本次更新的值比较,只将变化的部分体现在 DOM 上。这个比较的过程,就是 Diff。

react中diff算法和vue中的diff算法区别。
React的diff和Vue的diff算法的不同之处
vue和react的diff算法都是进行同层次的比较,主要有以下两点不同:

vue对比节点,如果节点元素类型相同,但是className不同,认为是不同类型的元素,会进行删除重建,但是react则会认为是同类型的节点,只会修改节点属性。
vue的列表比对采用的是首尾指针法,而react采用的是从左到右依次比对的方式,当一个集合只是把最后一个节点移动到了第一个,react会把前面的节点依次移动,而vue只会把最后一个节点移动到第一个,从这点上来说vue的对比方式更加高效。

React的Diff算法:
React使用的diff算法通过以下几个规则来优化更新:

比较同一层级的节点,采用基于深度优先的比较方式。
利用 key 来帮助虚拟DOM优化更新(主要用于列表渲染)。
通过生命周期方法来控制是否进行完整更新。

Vue的Diff算法:
Vue的diff算法与React类似,但Vue通过模板编译生成虚拟DOM,再通过diff算法来比较每次更新的差异。

http://www.lryc.cn/news/498126.html

相关文章:

  • 最新AI问答创作运营系统(SparkAi系统),GPT-4.0/GPT-4o多模态模型+联网搜索提问+问答分析+AI绘画+管理后台系统
  • docker应用
  • COCO数据集理解
  • C# 向上取整多种实现方法
  • Elastic Cloud Serverless:深入探讨大规模自动扩展和性能压力测试
  • 新一代零样本无训练目标检测
  • es 3期 第13节-多条件组合查询实战运用
  • 全局token验证
  • 实时美颜技术详解:美颜SDK与直播APP开发实践
  • 电子应用设计方案-41:智能微波炉系统方案设计
  • P5736 【深基7.例2】质数筛
  • 数据结构初阶1 时间复杂度和空间复杂度
  • E130 PHP+MYSQL+动漫门户网站的设计与实现 视频网站系统 在线点播视频 源码 配置 文档 全套资料
  • OSCP - Proving Grounds - Fanatastic
  • ArcMap 分享统计点要素、路网、降雨量等功能操作
  • 概率论——假设检验
  • 爬虫项目练手
  • C程序设计:解决Fibonacci.数列问题
  • 35页PDF | 元数据与数据血缘落地实施(限免下载)
  • Lua元表和元方法的使用
  • 基于Pyhton的人脸识别(Python 3.12+face_recognition库)
  • Spring Boot+Netty
  • LCR 023. 相交链表
  • Linux命令行下载工具
  • 期末复习-Hadoop名词解释+简答题纯享版
  • 嵌入式Linux无窗口系统下搭建 Qt 开发环境
  • C#基础教程
  • Alibaba EasyExcel 导入导出全家桶
  • Spring Cloud + MyBatis Plus + GraphQL 完整示例
  • uni-app简洁的移动端登录注册界面