[英]How's Virtual DOM implementation is different than createDocumentFragment() if no state is observed?
虚拟 DOM 是 DOM 的轻量级副本,在将其插入实际 DOM 之前在本地维护/缓存。 我们可以根据需要更改它,然后保存到我们真正的 DOM 树中。 它使用高效的 diff 算法来回更新更改和其他用例。
这一切都是为了避免对 DOM 的直接操作,因为这是一项昂贵的操作。
我们有document.createDocumentFragment()方法,它可以在 JavaScript 中使用,它还可以创建假想树节点对象以插入到 DOM 中。
我想知道,如果我没有需要观察任何状态或双向绑定的视图/组件(例如,仅通过传递的选项渲染模板,并处理 DOM 上的事件),虚拟 DOM 是否真的会在这种情况下有所作为?场景?
或者它与 createDocumentFragment() 一样好,如果它所要做的只是渲染而不观察状态。
最简单的答案是 NodeJS 确实(/将)没有document.createDocumentFragment
,也没有document.createElement
或任何类似的东西。
VirtualDOM 的重点是不仅允许对稍后注入 DOM 的系统进行大规模编辑,而且允许在不存在纯 DOM 的环境中进行任何编辑。
这是DocumentFragment
和 VirtualDOM 实际应用的最大区别。
在 DOM 虚拟化的特定实例方面的额外好处是,与手动插入片段及其子元素相比,某些视图库(例如 React)使处理这些事情变得非常简单。
虚拟 DOM 是 UI 树的虚拟表示。 它的名称具有误导性,因为它不再链接到 DOM。 如今,React 可用于带有react-dom
Web 应用程序或带有react-native
移动应用程序。
DocumentFragment 和 Virtual DOM 确实相似:树状结构包含具有相似信息的节点。 确实可以使用 DocumentFragment 来跟踪更改并在必要时更新 DOM。 但是,不可能在本机开发中使用它。 此外,节点将包含不必要的属性和方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.