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操作,高效更新视图。

相关推荐
吃一根烤肠几秒前
使用ChatGPT Copilot加速Python调试:实战指南
前端·ui·html
Embrace9246 分钟前
钉钉工作台内嵌应用=》调用钉钉对话框
前端·javascript·钉钉
蜡台10 分钟前
Vue2 elementui2 中 el-switch 实现先判断改变状态
前端·vue.js·elementui·el-switch
whuhewei10 分钟前
CSS动画倍速播放
前端·css
周不凢13 分钟前
elementui 表格行选择:通过 toggleRowSelection 方法控制表格行的选中状态
前端·javascript·elementui
黄林晴15 分钟前
Swift 杀进 Android,Google 和 Apple 都要失眠了?
android·前端·swift
一晌小贪欢18 分钟前
Web 自动化指南:如何用 Python 和 Selenium 解放双手
开发语言·前端·图像处理·python·自动化·python办公
云浪18 分钟前
认识 Service Worker
前端·javascript
方也_arkling21 分钟前
【Vue-Day11】props的使用
前端·javascript·vue.js
心之语歌23 分钟前
前端刷新处理数据的几种方式
前端