面试题: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无法进行针对性的优化。

相关推荐
2501_920931705 小时前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
0思必得07 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
摘星编程7 小时前
React Native鸿蒙版:Drawer抽屉导航实现
react native·react.js·harmonyos
东东5167 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino7 小时前
图片、文件的预览
前端·javascript
2501_920931709 小时前
React Native鸿蒙跨平台实现推箱子游戏,完成玩家移动与箱子推动,当所有箱子都被推到目标位置时,玩家获胜
javascript·react native·react.js·游戏·ecmascript·harmonyos
layman05289 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔9 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李9 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN9 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化