当前位置: 首页 > 知识库问答 >
问题:

为什么浏览器不能在内部使用虚拟dom作为优化?

丌官信厚
2023-03-14

根据我的理解,虚拟DOM是一个由Javascript对象组成的树,有父/子对象等,但没有真正DOM的大部分“沉重”特性。框架(例如React/VUE)通过从头创建一个虚拟DOM来响应模型状态的变化,然后对虚拟DOM的最后一个版本进行比较,以确定要改变什么真实的DOM。

我读过的许多文章都声称虚拟DOM的速度更快,因为真正的DOM在每次发生更改时都必须重新布局(甚至重新绘制),但事实并非如此--只有当某些JS代码显式地要求某个样式/文本流相关值(如高度/宽度等)时,才需要重新布局。而且,大多数使用虚拟DOM的框架在这方面都不能做得更好--除非确保开发人员不会意外地这样做。

另外,在最近的某个时候,浏览器考虑为DOM突变提供事件挂钩,但这个想法已经被放弃,这意味着在DOM突变时不需要激发任何事件。

共有1个答案

王俊哲
2023-03-14

虚拟DOM类似于当前情况的变通方法。W3C正在重新构建DOM,并使当前的“虚拟DOM”原生于浏览器。但你知道这有多慢--它必须被起草、讨论、接受,然后开始有趣的部分--在不同的浏览器中实现它。他们在CSS3和flexbox模型上仍然存在问题--每个浏览器都有自己的术语和标准来使用它们。

虚拟DOM也是一样--他们还没有接受它是一个跨浏览器的解决方案。这最终会在将来发生,但在此之前--我们使用JS选项。

如果您关注JS世界--promises也是如此--我们得到了BluebirdjQuery实现,但最后promises变成了本机,不再需要所有这些库和框架

 类似资料:
  • 作为一个指针,我觉得这可能与运行时需要从JIT JavaScript跳到本地DOM操作代码时的上下文切换有关,但我从未找到关于这一点的明确答案。

  • 本文向大家介绍为什么虚拟dom会提高性能?相关面试题,主要包含被问及为什么虚拟dom会提高性能?时的应答技巧和注意事项,需要的朋友参考一下 虚拟dom相当于在js和真实dom中间加了一个缓存,利用dom diff算法避免了没有必要的dom操作,从而提髙性能。 具体实现步骤如下: 1. 用JavaScript对象结构表示DOM树的结构;然后用这个树构建一个真正的DOM树,插到文档当中 2.当状态变更

  • 问题内容: 我尝试在Firefox 15上使用,即使它在其他版本的Firefox和其他浏览器(例如Chrome和Safari)上也无法使用。 当我使用Firefox的检查器查看属性时,将被删除并显示错误“无效的属性值”。MDN和caniuse表示Firefox 4及更高版本支持该功能! 怎么会有时性能喜欢和一些浏览器的工作和在其他无效? 免责声明 :这是所有问题的规范重复,可通过添加供应商前缀来完

  • 本文向大家介绍什么是虚拟DOM?相关面试题,主要包含被问及什么是虚拟DOM?时的应答技巧和注意事项,需要的朋友参考一下 虚拟 dom 是相对于浏览器所渲染出来的真实 dom 的,在react,vue等技术出现之前,我们要改变页面展示的内容只能通过遍历查询 dom 树的方式找到需要修改的 dom 然后修改样式行为或者结构,来达到更新 ui 的目的。 这种方式相当消耗计算资源,因为每次查询 dom 几

  • 问题内容: 我们只是在不使用无头浏览器的情况下实施CI,而是使用实际的浏览器。因此,一旦开发团队签入了新代码,我们的烟雾自动化代码将在汽车机器上作为后台进程运行并发送结果。如果有任何故障,它甚至可以跨屏幕截图发送。我们没有得到的是,使用无头浏览器进行上述处理的好处是什么。我们需要我们的烟雾脚本来获得此覆盖范围。假设提交了一个庞大的表单,该表单可以在5分钟内使用“选择”,“日历”,“上载”等控件运行

  • gRPC基于HTTP/2,浏览器广泛支持HTTP/2(假设)。因此,我觉得从浏览器使用gRPC应该没有问题。 然而,很明显有一个问题。协议grpc web是不同的,因为“由于浏览器限制”而存在。还有许多博客文章描述了为让gRPC从浏览器工作而部署的复杂技术堆栈。 我忽略了实际的问题——为什么gRPC不只是在浏览器上工作?