是否有一个项目使用TypeScript定义"process"变量来使用process.env.NODE_ENV?找不到任何地方.
我现在正在研究 virtual-dom,我想知道 virtual-dom 是否真的比手动操作视图快。现在我明白了 virtual-dom 和 diff 算法可以防止不必要的重流,例如当我们想要改变它时:
<div>
<div>a</div>
<div>b</div>
</div>
Run Code Online (Sandbox Code Playgroud)
对此:
<div>
<div>c</div>
<div>d</div>
</div>
Run Code Online (Sandbox Code Playgroud)
因此,当我们使用直接操作时,我们可能会有 4 次重排:2 次用于删除每个 div 并创建新的 div。我们还将对 dom 进行更多操作,因为我们应该创建新元素(也许从 dom 中删除 -> 创建新 dom -> 设置属性 -> 安装到文档比直接编辑 dom 属性更快?)。另一方面,我们有快速漂亮的差异算法,它生成 2 个补丁只是为了替换我们的 div 内容,可能我们会有 1 次重排。(如果我在写re-flows的时候写错了,请告诉我)
在这种情况下,virtual-dom 可能是规则,但是当我们有 2 个真正不同的树时,我们不会从 diff 中获得很多好处,所以我们可能会防止一些重流,但是是时候生成新树并运行 diff 和补丁要长得多。这是我的第二个问题。例如,在https://github.com/Matt-Esch/virtual-dom库的动机中,他们说:“因此,当您的应用程序状态更改时,您只需创建一个虚拟树或 VTree,而不是更新 DOM”。每次当我需要更改视图中的某些内容时,构建一个新的虚拟树真的很好吗?
当然,我会尝试做一些测试来评估性能,但我想知道一些更多的技术方面和原因,为什么 virtual-dom 真的更好,或者,也许不是?
我正在开发一个相当大型的应用程序,非常感谢您能提供一些建议。我有一个应用程序包装器react-redux
<Provider>
,它有子应用程序列表。
const appState = {
subApps: [],
};
Run Code Online (Sandbox Code Playgroud)
子应用程序非常复杂,使用它们的某些组件作为容器会很方便,因此使用mapStateToProps
和mapDispatchToProps
。但是,使用mapStateToProps
是不可能的,因为store
是根对象,并且我们不知道当前子应用程序在 中的索引是什么appState
。
将来我计划将这些子应用程序分开,然后放入自己的网络工作线程中。在这种情况下,也许可以使用多个商店并将商店发送到主线程并将其作为主商店的一部分?
有很多方法可以处理这种情况,基本上,问题是如何用redux
框架处理子应用程序之类的东西。也许你们中的一些人遇到了类似的问题,或者只是知道如何以最佳方式解决问题。