面试题:React的真实DOM和虚拟DOM的区别

真实DOM,就是文档对象类型,在页面上渲染的每一个节点都是一个真实DOM结构。

虚拟DOM,就是一个描述描述DOM结构的对象。

在创建虚拟DOM的目的就是为了更好将虚拟节点渲染到页面上,虚拟DOM对象的节点与真实DOM的属性是一一对应的。

在React中,ReactDOM.render()函数将虚拟DOM节点插入到真实DOM节点上,并且渲染到页面上。

虚拟DOM和真实DOM的区别:

  1. 虚拟DOM不会进行重排和重绘,操作真实DOM的时候,会频繁触发重排和重绘;
  2. 虚拟DOM的总消耗性能为:虚拟DOM的增删改、真实DOM差异增删改和重排重绘;真实DOM性能消耗为真实DOM增删改加上重排重绘;

如果是原生JavaScript来操作DOM,浏览器会从构建DOM开始,从头到尾执行一遍流程。比如在操作一次,需要更新10个DOM节点,那么浏览器会执行10次流程。

然而通过虚拟DOM来完成的话,同样的更新10个节点,虚拟DOM不会马上操作DOM,而是把10次更新的diff内容保存在本地内存的一个js对象上,最后才把这个js对象转化为真实DOM。

虚拟DOM与真实DOM的优缺点:

真实DOM容易理解,但是开发效率低,体验差;

虚拟DOM是使用,提升了开发效率和体验,同时实现跨平台能力,一套代码多端运行。缺点是在一些性能要求极高的应用中,虚拟DOM无法进行针对性的优化。

相关推荐
甲枫叶13 分钟前
【claude产品经理系列13】核心功能实现——需求的增删改查全流程
java·前端·人工智能·python·产品经理·ai编程
蓝帆傲亦31 分钟前
Vue.js 大数据处理全景解析:从加载策略到渲染优化的完全手册
前端·vue.js·flutter
不会敲代码132 分钟前
React组件通信实战:从Todo应用彻底搞懂父子、子父、兄弟通信
前端·react.js
SuperEugene32 分钟前
字符串处理实战:模板字符串、split/join、正则的 80% 用法
前端·javascript·面试
wuhen_n33 分钟前
前端构建工具:从Rollup到Vite
前端
钟智强33 分钟前
深度剖析CVE-2023-41064与CVE-2023-4863:libwebp堆溢出漏洞的技术解剖与PoC构建实录
前端·后端
钟智强33 分钟前
MySQL客户端惊现高危漏洞CVE-2023-21980,可导致远程代码执行
前端·后端
Cache技术分享35 分钟前
332. Java Stream API - Java Stream 实战进阶:按年份找出合作最多的作者对
前端·后端
SuperEugene35 分钟前
前端正则表达式完全指南:从手写不出到随手就来
前端·正则表达式
Highcharts.js36 分钟前
图表学习|基于highcharts创建子弹图表,以及子弹图的应用与扩展设计
javascript·信息可视化·highcharts·图表开发·子弹图表·kpi图