虚拟 DOM 一定更快吗

简介: 虚拟 DOM 一定更快吗

前言

  1. vm/ 虚拟 DOM 做前端的肯定都不陌生了,react和vue中都使用了虚拟DOM
  2. 今天来说下虚拟 DOM 一定更快吗? 抬杠了

2. 是什么 what

  1. 虚拟 DOM 的主要优势在于它可以通过比较前后两个虚拟 DOM树的差异来最小化实际 DOM 的操作。
  2. 通过将对实际 DOM 的修改集中处理,可以减少回流(Reflow)和重绘(Repaint)的次数,从而提高性能。

3. 虚拟DOM不一定更快

  1. 虚拟 DOM 也引入了额外的开销
  2. 在每次更新时,需要生成新的虚拟 DOM 树,并与之前的虚拟 DOM 树进行比较
  3. 这个比较过程需要耗费一定的计算资源。而对于简单的应用或页面,直接操作实际 DOM 可能更快
  4. 因为省去了虚拟 DOM 的生成比较过程

  1. 虚拟 DOM 的性能还受到底层实现的影响。
  2. 不同的虚拟 DOM 实现可能在性能方面有所差异。
  3. 一些优化手段如 diff 算法的优化、批量更新等也会影响虚拟 DOM 的性能
  • 案例
  1. 一个页面就有一个按钮,点击一下,数字加一,那肯定是直接操作DOM更快

4. react中呢

  • react中涉及到虚拟DOM的代码主要分为以下三部分,其中核心是第二步的domDiff算法:
  1. render中的JSX(或者createElement这个API)转化成虚拟DOM
  2. 状态或属性改变后重新计算虚拟DOM并生成一个补丁对象(domDiff)
  3. 通过这个补丁对象更新视图中的DOM节点

5. 那为啥还都用 虚拟DOM呢

  1. 因为使用虚拟DOM可以提高代码的性能下限
  2. 并极大的优化大量操作DOM时产生的性能损耗
  3. 同时这些框架也保证了,即使在少数虚拟DOM不太给力的场景下,性能也在我们接受的范围内。

参考资料


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉
相关文章
|
3天前
|
JavaScript 前端开发 编译器
说说你对虚拟 DOM 的理解?
说说你对虚拟 DOM 的理解?
20 0
|
3天前
|
JavaScript 前端开发 算法
MVVM模型,虚拟DOM和diff算法
1.MVVM是前端开发领域当中非常流行的开发思想。(一种架构模式)目前前端的大部分主流框架都实现了这个MVVM思想,例如Vue,React等2.虽然Vue没有完全遵循MVVM模型,但是Vue的设计也受到了它的启发。Vue框架基本上也是符合MVVM思想的 3.MVVM模型当中尝到了Model和View进行了分离,为什么要分离?
|
3天前
|
JavaScript 开发者 UED
虚拟DOM的原理
虚拟DOM的原理
32 1
|
3天前
|
JavaScript 前端开发 算法
js开发:请解释什么是虚拟DOM(virtual DOM),以及它在React中的应用。
虚拟DOM是React等前端框架的关键技术,它以轻量级JavaScript对象树形式抽象表示实际DOM。当状态改变,React不直接操作DOM,而是先构建新虚拟DOM树。通过高效diff算法比较新旧树,找到最小变更集,仅更新必要部分,提高DOM操作效率,降低性能损耗。虚拟DOM的抽象特性还支持跨平台应用,如React Native。总之,虚拟DOM优化了状态变化时的DOM更新,提升性能和用户体验。
31 0
|
3天前
|
前端开发 JavaScript 算法
深入理解前端框架:解析 React 的虚拟 DOM
虚拟 DOM 是 React 前端框架的核心概念之一。本文将深入探讨虚拟 DOM 的原理和应用,帮助读者更好地理解 React 框架的工作机制,并学习如何高效地使用虚拟 DOM 进行前端开发。
41 1
|
2天前
|
JavaScript 前端开发 算法
深入理解虚拟DOM:原理、优势与实践
深入理解虚拟DOM:原理、优势与实践
|
3天前
|
JavaScript 算法 前端开发
虚拟Dom
虚拟Dom
|
3天前
|
JavaScript 算法 前端开发
Vue的虚拟DOM:Vue虚拟DOM的工作原理
【4月更文挑战第24天】Vue的虚拟DOM提升渲染性能,通过创建JavaScript对象树(虚拟DOM树)来跟踪DOM变化。当状态改变,Vue用新的虚拟DOM树与旧树对比(diff算法),找到最小DOM操作集合来更新真实DOM。优化策略包括减少状态变化、使用key属性和简化组件结构。理解虚拟DOM工作原理有助于Vue的性能优化。
|
3天前
|
JavaScript 前端开发 算法
什么是虚拟dom
什么是虚拟dom
|
3天前
|
JavaScript 前端开发 算法
为什么虚拟dom会提高性能?
为什么虚拟dom会提高性能?
24 0