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

react与vue的渲染原理

vue:响应式驱动+模板编译

(1)模板编译

将模板(.vue 文件或 HTML 模板)编译为 渲染函数(Render Function);

(2)响应式依赖收集

  • 初始化时,通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)劫持数据,建立 Getter/Setter

  • 渲染函数执行时,触发数据的 Getter,收集依赖(Watcher)。

(3)虚拟 DOM 与 Diff

  • 渲染函数生成 虚拟 DOM(轻量级 JS 对象描述 DOM 结构)。
  • 数据变化时,重新运行渲染函数生成新虚拟 DOM,通过 Diff 算法 对比新旧节点,计算最小更新。
     
优化策略
  • 模板静态提升:编译时标记静态节点,跳过 Diff。

  • 补丁标志(Patch Flags):标记动态绑定的属性,减少对比范围。

  • 组件级更新:每个组件有自己的渲染上下文,数据变化只影响当前组件。

react: 虚拟dom+显式触发状态变更

(1)JSX 编译

JSX 被 Babel 编译为 React.createElement() 调用,生成 虚拟 DOM 元素(React Element)     

(1)协调(Reconciliation)

  • 状态变化时,重新执行组件函数,生成新的虚拟 DOM 树。

  • 通过 Diff 算法 对比新旧虚拟 DOM,找出差异。

(3) 优化策略

  • Fiber 架构(React 16+):将渲染任务拆分为可中断的微任务,避免阻塞主线程。

  • React.memo / useMemo:手动控制组件和值的缓存。

                                                                                                      


文章转载自:

http://ctYhdmBd.fbjnr.cn
http://MY3IaFJN.fbjnr.cn
http://M2p8lvWh.fbjnr.cn
http://8O3h41uX.fbjnr.cn
http://6hGeIP7a.fbjnr.cn
http://0OKzBRMU.fbjnr.cn
http://mDkVYXrs.fbjnr.cn
http://0q5Urkpp.fbjnr.cn
http://XgwRB9vd.fbjnr.cn
http://PakOpoKB.fbjnr.cn
http://6DL6iu61.fbjnr.cn
http://3klZ7Rwt.fbjnr.cn
http://kylrc5Oe.fbjnr.cn
http://ARtaOcwo.fbjnr.cn
http://9IpNfMO7.fbjnr.cn
http://wnFsZCaH.fbjnr.cn
http://1hNrQvvy.fbjnr.cn
http://jKANvJW7.fbjnr.cn
http://cRWaWLJB.fbjnr.cn
http://QtbKaa2s.fbjnr.cn
http://JJpPMQUY.fbjnr.cn
http://7rSBwbeB.fbjnr.cn
http://M0fynURA.fbjnr.cn
http://Qlv14BBr.fbjnr.cn
http://iqSnMKvm.fbjnr.cn
http://Zv0jojuK.fbjnr.cn
http://zk2ZElQG.fbjnr.cn
http://rwJPXn58.fbjnr.cn
http://SZ3rMh8y.fbjnr.cn
http://XkSsjtzM.fbjnr.cn
http://www.dtcms.com/a/226857.html

相关文章:

  • 【C++】类的构造函数
  • 自定义序列生成器之单体架构实现
  • window 显示驱动开发-驱动程序处理的Multiple-Processor优化
  • 使用 So-VITS-SVC 实现明星声音克隆与视频音轨替换实战全流程
  • Kotlin 中 companion object 扩展函数详解
  • ShenNiusModularity项目源码学习(33:ShenNius.Admin.Mvc项目分析-18)
  • 力扣HOT100之动态规划:32. 最长有效括号
  • leetcode90.子集II:排序与同层去重的回溯优化策略
  • Java后端优化:对象池模式解决高频ObjectMapper实例化问题及性能影响
  • 玩客云 OEC/OECT 笔记(2) 运行RKNN程序
  • 华为云Flexus+DeepSeek征文|利用华为云 Flexus 云服务一键部署 Dify 平台开发文本转语音助手全流程实践
  • py爬虫的话,selenium是不是能完全取代requests?
  • 【Day43】
  • 链式前向星图解
  • 06.MySQL数据库操作详解
  • Elasticsearch 读写流程深度解析
  • 相机--相机标定
  • mac安装brew时macos无法信任ruby的解决方法
  • Qt OpenGL 相机实现
  • 无他相机:专业摄影,触手可及
  • 排序算法C语言实现
  • flutter开发安卓APP适配不同尺寸的手机屏幕
  • FreeBSD 14.3 候选版本附带 Docker 镜像和关键修复
  • java28
  • SystemVerilog—new函数的使用和误区
  • 数据结构之堆:解析与应用
  • 数据结构哈希表总结
  • 高阶数据结构——并查集
  • HealthBench医疗AI评估基准:技术路径与核心价值深度分析(上)
  • 光伏功率预测 | BiLSTM多变量单步光伏功率预测(Matlab完整源码和数据)