如果没有观察到状态,虚拟DOM实现与createDocumentFragment()的不同之处是什么?

时间:2015-06-09 18:21:18

标签: javascript dom reactjs

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

3 个答案:

答案 0 :(得分:3)

最简单的答案是NodeJS(/将)没有document.createDocumentFragment,也没有document.createElement或任何此类事情。

VirtualDOM的目的是不仅允许对稍后注入DOM的系统进行大规模编辑,而且允许在简单的DOM没有的环境中进行任何编辑。存在。

这是DocumentFragment和VirtualDOM的实际应用之间的最大区别。

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

答案 1 :(得分:0)

虚拟DOM React与DocumentFragment没有关系。因此,您的问题的答案正在酝酿之中,即每个人的实现方式都不相同。

如果您真的对Virtual DOM的工作原理和React中的协调感兴趣,那么您可以阅读有关此主题的众多文章之一。

答案 2 :(得分:0)

虚拟DOM是UI树的虚拟表示。它的名称具有误导性,因为它不再与DOM链接。如今,React可用于具有react-dom的Web应用程序或具有react-native的移动应用程序。

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