虚拟dom

共 793字,需浏览 2分钟

 ·

2026-02-25 16:54

一、vue和react

在vue和react中,我们将大部分操作dom的事情交给了vue和react,从而使我们只需要关心操作数据即可。数据变化时,vue和react操作dom实现自动更新视图。每次更新视图的最小单位是组件。vue和react都使用了虚拟dom。

一、虚拟dom

1.是什么?

一个JavaScript对象,用来描述真实DOM。如:

const VNode= { tag:"div", attrs:{id:"app",...}, children:[ {tag:"p",...}, ... ], ... }

2.能做什么?

1. 降低(操作dom)成本,保障性能

       可以结合diff算法比较两个虚拟dom,从而找到这两个虚拟dom的相同点和不同点。

方式一: 通过比较新旧两个虚拟dom的差异(diff过程),先确定哪些部分变化了需要更新其真实的dom,再去更新真实dom。 方式二: 不管哪部变化了哪部分没变化,直接更新组件内所有的真实dom。 方式一与方式二相比,明显方式一更加合理,成本更低性能更好,所以虚拟dom能够保障合理的性能。

2.跨平台支持

由于虚拟dom本质上是JavaScript对象,与平台无关,因此可以实现跨平台,不同平台共用一套虚拟dom,达到跨平台的效果。

3.优缺点

优点: 1. 保障性能(合理的操作dom,减少不必要的dom操作) 2. 跨平台(具有兼容性) 3. 减少手动操作dom(提升开发效率) 缺点: 1. 额外的计算:虚拟 DOM 的计算(消耗时间) 2. 额外的内存:虚拟dom的内存占用(消耗内存) 有得必有失,就像在稿纸上计算数学题,虽然减少了人脑的负担,但也必然需要额外的时间(用手写字的时间)和额外的墨水(墨水的消耗)。

二、图例

1.vue组件

2. 假设没有虚拟dom

3. 有虚拟dom

浏览 1
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报