虚拟dom一定比真实dom快吗 虚拟DOM是否比真实DOM更高效?
虚拟dom一定比真实dom快吗
今日重点为您介绍虚拟dom一定比真实dom快吗的电脑小知识,下面小编为您详细解答
虚拟DOM(VNode) 和真实DOM的渲染效率问题一直是面试中高频、高难度话题。
昨天有个同学在面试中就被问到了这个问题。
面试官提问说:“虚拟DOM(VNode)渲染效率一定比 真实DOM 快吗?你是如何得到的这个结论?你的依赖数据是什么?”
好吧… 大厂的面试就是不一样,光靠背八股文肯定是混不过去了。
那么今天,就让咱们带着这三个问题,一起来看看 虚拟DOM(VNode) 和 真实DOM 的真实渲染效率,以及测试、依赖数据!
1、测试逻辑
在去讲解测试逻辑之前,我们先来明确一下什么叫做 虚拟DOM 和 真实DOM。
虚拟DOM
所谓虚拟DOM指的是:通过 JS 对象来模拟 DOM 结构。
所以我们可以简单的把 虚拟DOM 理解为 JS 对象。只不过这个 JS 对象比较复杂一些而已。
真实DOM
所谓真实DOM就是:通过 JS 获取到的 html 标签元素。
比如,我们通过document.querySelect('#app')拿到的这个元素就被成为 DOM 元素,也就是 真实DOM。
测试逻辑
那么明确好了两个基本概念之后,接下来咱们就说下测试方案。整个测试方案分成 4 个部分:
- DOM 操作 和 JS 操作对比:来看下 DOM 操作 和 JS 操作的性能耗时差异
- DOM 操作 和 VNode 操作对比:来看下 涉及到 VNode 操作时,性能差异
- DOM 操作 和 复杂的VNode 操作对比:来看下 当 VNode 变得复杂时,性能消耗增加了多少
- 复杂DOM 操作 与 复杂VNode 操作对比:来看下当 DOM 操作都变得复杂时,性能消耗差异
明确好了以上内容之后,就让咱们开始吧~~
2、DOM 操作与数据操作对比
<body>
<div id="app"></div>
<script>
const COUNT = 10000
console.time('dom 耗时')
for (let i = 0; i < COUNT; i++) {
const ele = document.createElement('div')
ele.innerHTML = 'hello bunian'
document.querySelector('#app').appendChild(ele)
}
console.timeEnd('dom 耗时')
console.time('js 耗时')
const vNodes = []
for (let i = 0; i < COUNT; i++) {
const vNode = {
type: 'div'
}
vNodes.push(vNode)
}
console.timeEnd('js 耗时')
</script>
</body>
在以上代码中,我们首先标记了一个数量值COUNT它表示循环执行的次数。然后我们利用console.time和 console.timeEnd来记录执行时间,这里打印出来的时间就是我们的耗时。
相关阅读
-
开发网站的基本过程 网站开发详细流程分享
下面为网友们详细介绍开发网站的基本过程和网站开发详细流程分享的教程内容,一起跟随小编看看吧! 企业官网是企业面向网络客户的一个重要“门面”,也是让企业展现自己实力,宣传自
-
常用的FTP工具有哪些 "常见的FTP工具有哪些选择"
跟大家说一说常用的FTP工具有哪些的方法内容,一起来看看吧! 在我们进行服务器数据传输的时候,经常会用到传输工具,下面我就来为大家介绍一下常用的FTP工具。 FileZilla FileZilla是一个免
-
Oracle imp命令详解:从基础到进阶
小编为网友们解答Oracle及imp命令详解的相关话题,下面来一起了解一下吧。 在处理Oracle数据库时,一个不可或缺的工具是 imp (导入)命令。 该命令用于将数据从一个Oracle数据库导入到另一个
-
常见的对象存储协议及其特点
一篇很详细的教程是关于常见的对象存储协议及其特点IT技巧方面的经验,接下来一起来看看吧。 对象存储协议是对象存储系统中的关键元素,它定义了客户端与存储系统之间交互的方式。 在


