有没有办法比较涉及虚拟 DOM 的渲染方法的内存消耗?

Is there a way to compare memory consumption of rendering approaches involving virtual DOM?

提问人:Kote Isaev 提问时间:11/6/2023 更新时间:11/6/2023 访问量:11

问:

反应

据我所知,React 基于这样的方法在更新时发生: 0) 在每次更新时重新创建任何内容,包括函数组件中声明的函数,包括作为 useState、setState 或 useEffect 参数的函数,以及其他钩子。

  1. 虚拟 dom 有 2 个版本(“当前”和“新”)。在更新流程期间,它们都位于内存中。
  2. 应用差异后,结果变为虚拟 dom 的“当前”版本,并丢弃以前的版本(计划用于最终的 GC?
  3. 虚拟 dom 应用于真实 dom。

替代理论 1

如果改用这种方法会怎样:

  1. 单个 VDOM(状态树)位于内存中
  2. 当更改为状态时,通过子组件的状态传播,如果在子组件属性中与它有任何绑定,
  3. 为更改的组件创建的新 real dom 作为应用于 requestAnimationFrame 调用中的真实 dom 的更改

3 的原因是它应该允许减少轻拂,因为对真实 dom 的所有更新都将发生在 requestAnimationFrame 内,“对用户不可见”,并且结果会减少,排序自动节流进程,并且在应用这些更新期间将运行更少的浏览器代码,并且在 requestAnimationFrame 回调完成后将触发实际组合(毕竟我希望如此)。

另类理论 2

分离渲染和初始化,例如

interface ComponentImplementation<TProps extends object, TState extends object> {
   initialize(props): TState;
   render(state:TState): VDomElement|(VDomElement[]);
}

理论 3

它本质上是理论 2 和作为 requestAnimationFrame 一部分的渲染调度的组合

问题

在内存消耗方面什么更好? 是否有一些实验库实现了类似理论 #1、#2、#3 的东西?

JavaScript ReactJS DOM 框架

评论


答: 暂无答案