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

反应虚拟DOM的目的到底是什么

谭炎彬
2023-03-14

在经历反应时,我产生了以下疑问:

>

  • DOM操作非常昂贵

    但是最终react也会进行DOM操作。我们无法使用虚拟DOM生成视图。

    折叠整个DOM并构建它会影响用户体验。

    我从来没有这样做过,我主要做的是更改所需的子节点(而不是折叠整个父节点)或附加由JS生成的HTML代码。

    例子:

    >

  • 当用户向下滚动时,我们将帖子附加到父元素,甚至react也必须以同样的方式执行。没有人会因此而毁掉整个dom。

    当用户对一篇文章发表评论时,我们将一个div(comment元素(HTML代码))附加到该特定的文章评论列表中。我认为没有人会因为这个而毁掉整个帖子(dom)

    3) 检查更改的“diffing”算法:

    为什么我们需要一个算法来检查更改。示例:如果我有100篇文章,每当用户单击某篇文章的编辑按钮时,我都会按如下方式操作

       $(".postEdit").click(function(){
            var post_id = $(this).data("postid");
            //do some Ajax and DOM manipulation to that particular post.
       })
    

    我告诉DOM改变特定的元素,那么扩散有什么帮助呢?

    我是不是想错了?如果有,请纠正我。

  • 共有2个答案

    鲁华茂
    2023-03-14

    这个讨论对于理解虚拟DOM及其在不同UI框架中的实现非常有帮助。

    • 为什么React的虚拟DOM概念比脏模型检查更有效

    还有一些其他的链接可以更好地解释这一点。

    >

  • https://auth0.com/blog/face-off-virtual-dom-vs-incremental-dom-vs-glimmer/

    http://teropa.info/blog/2015/03/02/change-and-its-detection-in-javascript-frameworks.html

  • 相高谊
    2023-03-14

    您是对的,当人们需要更新单个元素时,他们不会倾向于折叠并重新创建整个DOM。相反,最佳实践是只重建所需的元素。但是,如果用户采取的行动实际上会影响很多元素呢?就像他们给一篇文章加上星星一样,你想在文章上反映出来,也许在页面的其他地方加上星星数。随着应用程序变得足够复杂,更改页面中需要更改的所有部分变得非常复杂,并且容易出错。另一个开发人员可能不知道页面上的其他地方有一个“星星计数”,并且会忘记更新它。

    如果可以重建整个DOM呢?如果您编写了渲染方法并存储了状态,以便在任何时候都可以从头开始渲染整个页面?这消除了许多这些痛点,但显然您失去了手动更改DOM部分所获得的所有性能增益。

    React和虚拟dom让您充分利用这两个世界。您可以得到优化的DOM更新,但作为开发人员,您不必保留整个应用程序的心智模型,也不必记住对于任何给定的用户或网络输入,您需要更改什么。虚拟dom还可能比您更有效地实现这些更改,只需重建您需要的元素。在某个时刻,你可能正在重建比“以防万一”更重要的东西。

    希望这种说法有道理!

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

    • 我刚开始学ReactJS。我以前在所有的项目中都使用jQuery和Javascript,在阅读了教程后,对ReactJS几乎没有什么疑问。 > 为什么我需要ReactJS,jQuery仍然是用来更新DOM和handlebar,dust是用来处理模板的。

    • 本文向大家介绍react的虚拟DOM和vue的虚拟DOM有什么区别?相关面试题,主要包含被问及react的虚拟DOM和vue的虚拟DOM有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 React 是数据先生成 vdom,然后对比 vdom(实现上并非先后顺序,两棵树边遍历边生成新的树),最后通过新的 DOM 树渲染。 Vue 是数据先进性对比,先通过数据的不同,再去更新 vdom(这不知道

    • 由于DOM具有结构,我认为在很多情况下,我们知道将要进行的确切更改,在这些情况下,我看不到虚拟DOM的优势。我是不是漏掉了这幅画中一些重要的部分? 我看到了一些关于虚拟DOM主题的其他讨论,但我觉得它没有回答我的问题。我希望举一个例子会使它更具体。

    • 对于类InetAddress,它有一个属性“networkaddress.cache.negative.ttl”。Javadoc说 原谅我愚蠢的问题,如果名称查找不成功,有什么要缓存的?不成功的名称查找意味着没有IP地址返回,所以它不能缓存任何IP地址。 这是否意味着此参数只会在缓存期间简单地返回“主机未找到”返回代码以进行同名查找,而不是执行实际的DNS查询? 谢谢

    • 前言 vdom 是 vue 和 React 的核心,先讲哪个都绕不开它。 vdom 比较独立,使用也比较简单。 如果面试问到 vue 和 React 和实现,免不了问 vdom: vdom 是什么?为何会存在 vdom? vdom 的如何应用,核心 API 是什么 介绍一下 diff 算法 什么是 vdom 什么是 vdom DOM操作是昂贵的。 步骤一:用JS对象模拟DOM树 步骤二:比较两棵虚