IT袋

当前位置:主页 > 经验教程 > 建站编程 >

虚拟dom一定比真实dom快吗

虚拟dom一定比真实dom快吗 虚拟DOM是否比真实DOM更高效?(3)

时间:2024-03-23 15:00:27 来源:IT袋 作者:马勇
导读:虚拟dom一定比真实dom快吗,在这个执行结果中,我们明确的发现 虚拟 的耗时已经是 真实 DOM 耗时的 40倍 差距了。 看到这里可能有些同学会说:这是因为虚拟DOM 远比 真实 DOM 复杂的

虚拟dom一定比真实dom快吗

虚拟dom一定比真实dom快吗

在这个执行结果中,我们明确的发现虚拟 的耗时已经是 真实 DOM 耗时的 40倍 差距了。

看到这里可能有些同学会说:这是因为虚拟DOM 远比 真实 DOM 复杂的原因导致的。所以接下来咱们就把两边的复杂性调整一直,然后看看最终的测试数据

5、复杂DOM 操作与 复杂VNode 操作对比

<body>
  <div id="app"></div>
  <div id="app2"></div>
  <script>
    const COUNT = 10000
    console.time('dom 耗时')
    for (let i = 0; i < COUNT; i++) {
      // 创建 div 元素
      const container = document.createElement('div');
      container.id = 'container';
      // 创建 h1 元素
      const h1 = document.createElement('h1');
      h1.textContent = 'Hello, World!';
      // 创建 ul 元素
      const ul = document.createElement('ul');
      // 创建三个 li 元素,并添加到 ul 元素中
      const li1 = document.createElement('li');
      li1.textContent = 'Item 1';
      ul.appendChild(li1);
      const li2 = document.createElement('li');
      li2.textContent = 'Item 2';
      ul.appendChild(li2);
      const li3 = document.createElement('li');
      li3.textContent = 'Item 3';
      ul.appendChild(li3);
      // 将 h1 和 ul 元素添加到 container 元素中
      container.appendChild(h1);
      container.appendChild(ul);
      // 将 container 元素添加到 #app2 元素中
      const app = document.querySelector('#app');
      app.appendChild(container);
    }
    console.timeEnd('dom 耗时')
    const { h, render } = Vue
    console.time('js 耗时')
    const vNodes = []
    for (let i = 0; i < COUNT; i++) {
      const vNode = h('div', { id: 'container' }, [
        h('h1', null, ['Hello, World!']),
        h('ul', null, [
          h('li', null, ['Item 1']),
          h('li', null, ['Item 2']),
          h('li', null, ['Item 3'])
        ])
      ]);
      // vNodes.push(vNode)
      render(document.querySelector('#app2'), vNode)
    }
    console.timeEnd('js 耗时')
  </script>
</body>

以上代码维持了两边同样的复杂程度,大家可以猜一猜最终的性能消耗会是什么情况呢?

查看最终的打印结果可以发现:

虚拟dom一定比真实dom快吗

在双方都足够复杂的情况下,虚拟DOM 的性能消耗是远超 真实DOM的。

但是,大家一定要注意:

以上测试结果只是在初始渲染的情况下的测试数据。

因为在实际开发中,DOM 的渲染是非常复杂的,涉及到:渲染、更新、删除等各种复杂的操作,所以说我们不能够仅通过这一次的测试数据得出所有场景下的结论。

相关阅读

  • 开发网站的基本过程 网站开发详细流程分享

    开发网站的基本过程 网站开发详细流程分享

    下面为网友们详细介绍开发网站的基本过程和网站开发详细流程分享的教程内容,一起跟随小编看看吧! 企业官网是企业面向网络客户的一个重要“门面”,也是让企业展现自己实力,宣传自

  • 常用的FTP工具有哪些 "常见的FTP工具有哪些选择"

    常用的FTP工具有哪些 "常见的FTP工具有哪些选择"

    跟大家说一说常用的FTP工具有哪些的方法内容,一起来看看吧! 在我们进行服务器数据传输的时候,经常会用到传输工具,下面我就来为大家介绍一下常用的FTP工具。 FileZilla FileZilla是一个免

  • Oracle imp命令详解:从基础到进阶

    Oracle imp命令详解:从基础到进阶

    小编为网友们解答Oracle及imp命令详解的相关话题,下面来一起了解一下吧。 在处理Oracle数据库时,一个不可或缺的工具是 imp (导入)命令。 该命令用于将数据从一个Oracle数据库导入到另一个

  • 常见的对象存储协议及其特点

    常见的对象存储协议及其特点

    一篇很详细的教程是关于常见的对象存储协议及其特点IT技巧方面的经验,接下来一起来看看吧。 对象存储协议是对象存储系统中的关键元素,它定义了客户端与存储系统之间交互的方式。 在