浅析虚拟DOM

虚拟DOM是JS对象,用于描述真实DOM。在React中,state变化导致新虚拟DOM生成,通过diff算法找到变化部分,减少真实DOM的更新,提高性能。其优点在于避免频繁直接操作DOM,减少重绘和排版,实现局部渲染。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于我们学习vue和react框架的童鞋们来说,虚拟DOM绝不是一个生疏的东西,对于我们使用的MVVM(m:是model层;v:是视图层;vm:是model层和view层中间的一个映射层)渲染中虚拟DOM常常被使用到,但具体是如何使用的,我们却不是很清楚,现在我将跟大家说说我的理解。

什么是虚拟DOM

虚拟DOM其实就是一个JS对象,用它来描述真实DOM

在我们书写react实例中,首先我们先有了state,即先有了数据

this.state={
	app:"hello app"
} 

然后我们要开始书写render函数,也就是用jsx语法去书写页面中我们需要的声明

<div><span>{{this.state.app}}</span></div>

这里react会自动帮你处理,等同于我们写:

React.createElement(
  'div',
   React.createElement('span', {}, 'hello app')
)

这时react会将我们写的JSX也就是模板语法+数据根据上述方法生成一个虚拟DOM ,虚拟DOM通常有3个参数,第一个是标签名,第二个是标签上的属性(无可以不写),第三个是标签包裹的内容,如上段代码

然后react将用虚拟DOM的结构生成真实的DOM来显示内容,当state发生变化,数据+模板生成了新的虚拟DOM

this.state={
	app:"hello world"
} 
React.createElement(
  'div',
   React.createElement('span', {}, 'hello world')
)

比较原始虚拟DOM和新的虚拟DOM的区别,找到区别是span中的内容,这个时候就涉及到了diff算法(同级比较,就近复用),diff会进行两个虚拟dom之间根据DOM节点的同层比对,一旦发现有一层不一样,就会连底下的节点一起重新渲染真实DOM,改变span中的内容。

简单总结下:

虚拟DOM的原理

简单概括有三点:

用JavaScript模拟DOM树,并渲染这个DOM树

比较新老DOM树,得到比较的差异对象

把差异对象应用到渲染的DOM树。

虚拟DOM的优点

虚拟DOM不会进行排版与重绘

虚拟DOM会进行频繁的修改然后一次性对比并修改真实的DOM中需要修改的部分

虚拟DOM可以只渲染局部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值