如果没有观察到状态,Virtual DOM 实现与 createDocumentFragment() 有何不同?

IT技术 javascript dom reactjs
2021-05-05 18:44:21

虚拟 DOM 是 DOM 的轻量级副本,在将其插入实际 DOM 之前在本地维护/缓存。我们可以根据需要更改它,然后保存到我们真正的 DOM 树中。它使用高效的 diff 算法来回更新更改和其他用例。
这一切都是为了避免直接操作 DOM,因为这是一项昂贵的操作。
我们有document.createDocumentFragment()方法,它可以在 JavaScript 中使用,它还可以创建假想树节点对象以插入到 DOM 中。
我想知道,如果我没有需要观察任何状态或双向绑定的视图/组件(例如,仅通过传递的选项渲染模板,并处理 DOM 上的事件),虚拟 DOM 是否真的会在这种情况下有所作为?场景?
或者它与 createDocumentFragment() 一样好,如果它所要做的只是渲染而不观察状态。

2个回答

最简单的答案是 NodeJS 确实(/将)没有document.createDocumentFragment,也没有document.createElement或任何这样的东西。

VirtualDOM 的重点是不仅允许对稍后将注入 DOM 的系统进行大规模编辑,而且允许在不存在纯 DOM 的环境中进行任何编辑。

这是DocumentFragments 和 VirtualDOM 的实际应用最大的不同

在 DOM 虚拟化的特定实例方面的额外好处是,与手动插入片段及其子元素相比,某些视图库(例如 React)使处理这些事情变得非常简单。

虚拟 DOM 是 UI 树的虚拟表示。它的名称具有误导性,因为它不再链接到 DOM。如今,React 可用于react-dom带有react-native.

DocumentFragment 和 Virtual DOM 确实相似:树状结构包含具有相似信息的节点。确实可以使用 DocumentFragment 来跟踪更改并在必要时更新 DOM。但是,不可能在本机开发中使用它。此外,节点将包含不必要的属性和方法。