【问题标题】:How Virtual DOM works in React or VueVirtual DOM 如何在 React 或 Vue 中工作
【发布时间】:2022-01-19 15:59:20
【问题描述】:

我是一名学生,我正在尝试为我的大学项目创建自己的虚拟 DOM(它不会有任何高级功能,如道具或事件,我会保持简单),就像其他著名的框架 React、Vue 等一样。

我只想知道当我们有多个代码文件时(代码拆分)。如果我对任何深层子元素进行更改,我不需要比较完整的虚拟 DOM(包括所有子元素和父元素),或者我只需要比较那个子元素。

如果我必须将完整的新虚拟 DOM(包括所有子项)与以前的虚拟 DOM 进行比较。那我为什么要关心在 React 或 Vue 中重新渲染(因为 child 的任何更改都会迫使框架比较完整的 Virtual DOM)

【问题讨论】:

  • Just Google/DuckDuckGo "react virtual dom 解释"

标签: javascript reactjs vue.js


【解决方案1】:

对于 Vue, vue2 和 vue3 中虚拟 DOM 的工作方式不同。

vue3 的做法是,

  1. 通过从组件文件中解析 HTML 模板或渲染函数并将其转换为虚拟节点表示。
  2. 在进行解析时,它会记录对动态数据有依赖关系的节点。
  3. 如下所示
dynamicData = {
    data1: [ effect1, effect2, ... ],
    data2: [ effect4, effect5, ... ],
    ... }
  1. 效果是定义解析某些数据值所需的计算的函数。
  2. 效果还包括虚拟节点的渲染功能
  3. 渲染函数智能地将虚拟节点转换为 DOM 元素
  4. 现在,每当 data1 发生变化时,Vue3 都会重新执行相应的效果,并为后续数据变化触发更新。

参考资料:

  1. Vue3 Reactivity
  2. Vnode Transformation

【讨论】:

    【解决方案2】:

    我从 React 的经验中推断出你最后一点的答案是,比较 Javascript 中的虚拟 DOM 有助于反应知道它必须在实际 DOM 上重新渲染什么,所以“重新渲染”是影响APP性能的难点。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 2018-03-03
      • 2020-07-29
      • 1970-01-01
      • 2014-04-08
      • 2018-04-01
      • 2016-06-02
      • 2021-06-23
      • 1970-01-01
      相关资源
      最近更新 更多