Javascript 在类似Todo的应用程序中,虚拟DOM的优势是什么

Javascript 在类似Todo的应用程序中,虚拟DOM的优势是什么,javascript,reactjs,dom,Javascript,Reactjs,Dom,我想我了解虚拟dom的工作原理。它使用内部javascript对象来表示DOM结构,当某些内容发生变化时,它会对真实的DOM进行区分和修补。但是在很多情况下,我们知道我们所做的更改,我们可以直接修补DOM。这不是比通过一个额外的扩散步骤更快吗 例如,对于TODO应用程序,我需要添加项目或删除项目,有时我需要检查项目以将其标记为完成。在这些情况下,我确切地知道应该在DOM中的何处执行操作,并在确切的节点直接操作DOM。如果使用虚拟DOM,它将进行区分,并找到更改的内容,在最后一步,它将应用更改并修

我想我了解虚拟dom的工作原理。它使用内部javascript对象来表示DOM结构,当某些内容发生变化时,它会对真实的DOM进行区分和修补。但是在很多情况下,我们知道我们所做的更改,我们可以直接修补DOM。这不是比通过一个额外的扩散步骤更快吗

例如,对于TODO应用程序,我需要添加项目或删除项目,有时我需要检查项目以将其标记为完成。在这些情况下,我确切地知道应该在DOM中的何处执行操作,并在确切的节点直接操作DOM。如果使用虚拟DOM,它将进行区分,并找到更改的内容,在最后一步,它将应用更改并修补真正的DOM。这正是我在没有虚拟DOM的情况下所做的。如果我真正的DOM操作很昂贵,那么虚拟DOM的最后一步也很昂贵,对吗

由于DOM具有结构,我认为在很多情况下,我们知道将要进行的确切更改,而在这些场景中,我看不到虚拟DOM的优势。我是否错过了照片中的一些重要片段


我看到一些关于虚拟DOM主题的其他讨论,但我觉得它没有回答我的问题。我希望给出一个例子能让它更具体。

虚拟DOM是一个节点树,它将内容、元素及其属性列为对象和属性。React的render()方法从React组件创建一个节点树,并由于数据模型中的操作导致的突变而更新此节点树。与真实DOM相比,虚拟DOM是真实DOM的内存表示形式。它是一个轻量级JavaScript对象,只是真实DOM的副本

React.js在任何时候维护2个虚拟DOM。其中一个是更新状态虚拟DOM,另一个是先前状态虚拟DOM。 最小化重新绘制屏幕所需的时间是浏览器制造商最关心的问题之一。可以做的最合适的事情是最小化和批处理需要重新绘制的DOM更改。这种策略在另一个抽象层次上对DOM更改进行批处理和缩减,这是React的虚拟DOM背后的思想

现在虚拟Dom是高效的。您可以期望更高的性能、最佳的CPU和内存使用率

您可以在我们的博客主题“React.js中使用虚拟DOM:五大好处”中详细介绍这一主题

Viit:-

可能的副本