说说Real DOM和Virtual DOM的区别?优缺点?

简介: 在页面渲染出的每个节点都是一个真实的DOM结构

Real DOM(真实的DOM)

在页面渲染出的每个节点都是一个真实的DOM结构

<div class="root">
  <h1>hello Real </h1>
</div>

这个就是真实的dom

真实dom的优缺点?

优点:

1. 直接操作HTML,易用

缺点:

1. 解析速度慢,效率低,内存占用量高

2. 性能差:频繁操作真实DOM,导致重绘、回流

Virtual DOM(虚拟的DOM)

虚拟dom的优缺点?

<h1 className="hClass">hello world</h1>

这是虚拟dom的写法

JSX实际是一种语法糖,在使用过程中会被babel进行编译,转化成JS代码,上面的虚拟DOM转换如下:

const vDom = React.createElement('h1',{
    {className:'hClass'},
     'hello world'
)

他一共有三个参数


第一个参数是 标签名,例如h1、div等;

第二个参数是对象,里面存放着标签的一些属性,如class、id等;

第三个参数是节点中的文本


优点:

1. 减少真实dom的频繁更新,减少重绘回流、占用内存少

2. 跨平台:一套react代码可以多端运行

缺点:

1. 页面首次渲染时,由于多一层虚拟dom的计算,速度比正常慢些


两者的区别

1.虚拟dom不会进行重绘和回流,而真实dom会频繁重排与重绘

2.虚拟dom的总损耗是”虚拟dom的增删改+真实dom的差异增删改+重排“;真实dom的消耗是”真实dom全部增删改+重排“

相关文章
|
1月前
|
JavaScript 前端开发 API
DOM驱动和数据驱动的区别
DOM驱动和数据驱动的区别
17 0
|
2月前
|
JavaScript 前端开发 算法
js开发:请解释什么是虚拟DOM(virtual DOM),以及它在React中的应用。
虚拟DOM是React等前端框架的关键技术,它以轻量级JavaScript对象树形式抽象表示实际DOM。当状态改变,React不直接操作DOM,而是先构建新虚拟DOM树。通过高效diff算法比较新旧树,找到最小变更集,仅更新必要部分,提高DOM操作效率,降低性能损耗。虚拟DOM的抽象特性还支持跨平台应用,如React Native。总之,虚拟DOM优化了状态变化时的DOM更新,提升性能和用户体验。
26 0
|
5月前
|
JavaScript 前端开发 安全
JavaScript DOM 操作:解释一下 `innerHTML` 和 `textContent` 的区别。
JavaScript DOM 操作:解释一下 `innerHTML` 和 `textContent` 的区别。
43 1
|
18天前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
16 0
|
5月前
|
XML JavaScript 前端开发
React中 Real DOM 和 Virtual DOM 的区别?优缺点?
React中 Real DOM 和 Virtual DOM 的区别?优缺点?
44 0
|
5月前
|
XML JavaScript 前端开发
js中dom和bom有什么区别
js中dom和bom有什么区别
35 0
|
5月前
|
JavaScript 前端开发 算法
React中的Virtual DOM(看这一篇就够了)
React中的Virtual DOM(看这一篇就够了)
179 0
|
5月前
|
JavaScript 前端开发 算法
Virtual DOM
Virtual DOM
17 0
|
1月前
|
缓存 JavaScript 前端开发
JavaScript中DOM操作:新手常犯错误与避免策略
【4月更文挑战第1天】本文介绍了JavaScript中DOM操作的基础和新手常犯错误,包括频繁查询DOM、不恰当的遍历、滥用innerHTML、忽视异步与DOM状态以及过度同步更新。建议包括缓存DOM引用、注意文本节点、慎用innerHTML以防止XSS、正确处理异步和批量更新。遵循最佳实践,开发者能提升代码质量和应用性能。
24 2
|
3天前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)