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

vue 中为什么需要虚拟DOM、VDOM 是如何生成的、VDOM 如何做 diff 的?

一、vue 中为什么需要虚拟DOM

1.1本概念
基本上所有框架都引入了虚拟 DOM 来对真实 DOM 进行抽象,也就是现在大家所熟知的VNode 和VDOM

·Virtual DOM 就是用js 对象来描述真实 DOM,是对真实 DOM 的抽象,由于直接操作 DOM 性能低但是is 层的操作效率高,可以将 DOM 操作转化成对象操作,最终通过 diff 算法比对差异进行更新 DOM(减少了对真实DOM的操作)。
。虚拟DOM 不依赖真实平台环境从而也可以实现跨平台

二、VDOM 是如何生成的?

。在vue中我们常常会为组件编写模板-template
。这个模板会被编译器编译为渲染函数-render
。在接下来的挂载过程中会调用 render 函数,返回的对象就是虚拟 dom
。会在后续的 patch 过程中进一步转化为 真实dom。

三、VDOM 如何做 diff 的?

。挂载过程结束后,会记录第一次生成的 VDOM -oldVnode
当响应式数据发生变化时,将会引起组件重新 render,此时就会生成新的VDOM-newVnode。使用oldVnode 与newVnode 做 diff 操作,将更改的部分应到真实 DOM 上从而转换为最小量的 dom操作,高效更新视图。

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

相关文章:

  • 数据分析思维与模型:相关分析法
  • 【算法萌新闯力扣】:两句话中的不常见单词
  • Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持
  • 基于 Glibc 版本升级的 DolphinDB 数据查询性能优化实践
  • 【顺序表的应用-通讯录的实现】
  • [Spring Cloud] Nacos 实战 + Aws云服务器
  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
  • 身份证号码校验
  • ArcGIS如何处理并加载Excel中坐标数据?
  • C++标准模板(STL)- 类型支持 (类型修改,从给定类型移除 const 或/与 volatile 限定符,std::remove_cv)
  • nodejs搭建本地服务
  • 如何看待Unity新收费模式?
  • Excel数据可视化—波士顿矩阵图【四象限图】
  • 【Java】智慧工地管理系统源代码,支持二次开发,SaaS模式
  • Lstm+transformer的刀具磨损预测
  • 本机idea连接虚拟机中的Hbase
  • .NET中的Object类学习3_MemberwiseClone方法
  • 鼎捷前端开发校招岗技术面面经(已过)
  • Rockchip平台rk3588源码下载编译(基于Android13)
  • RuntimeError: PyPI no longer supports ‘pip search‘ (or XML-RPC search).
  • 21款奔驰GLS450升级23P驾驶辅助 提升安全出行
  • iOS越狱检测总结
  • 场景驱动的 AI 体验设计:如何让智能 IDE 赋能遗留系统重写
  • 【封装UI组件库系列】搭建项目及准备工作
  • C#使用DateTime获取日期和时间
  • rook-ceph部署
  • JVM基础- 垃圾回收器
  • 数理统计的基本概念(二)
  • CountDownLatch和CyclicBarrier
  • 云原生正在重塑软件的整个生命周期(内附资料)