ngrx 和 ngxs 之间的性能差异? [关闭]

Posted

技术标签:

【中文标题】ngrx 和 ngxs 之间的性能差异? [关闭]【英文标题】:Difference in performance between ngrx and ngxs? [closed] 【发布时间】:2018-11-15 04:43:21 【问题描述】:

我想在我的 Angular 6 应用程序中使用 ngxs 进行状态管理。

但我不确定它是否适合大型项目。

我找不到任何关于 ngrx 和 ngxs 之间的性能差异的文章。 有人可以提供一些有关它的信息吗?

性能指标:从商店中获取大量商品并将其写回商店。

【问题讨论】:

我敢打赌,如果您有一个运行缓慢的 Angular 应用程序,并且您更改了正在使用的库,它仍然会运行缓慢。 性能怎么样?你需要更具体。 【参考方案1】:

这是来自 Reddit (Angular2+ community) 的好答案。它来自一位开发者,他测试了两者并切换到 NGXS。

我想分享我的经验。我们有一家中大型企业 应用程序。我们从 NGRX 开始,但很快就清楚了

NGRX 代码很难理解和写给队友。

NGRX 是样板地狱。你花了很多时间在它上面。

“效果”的概念很好,但它只是增加了额外的层次 可以简化的复杂性。

开发者体验 (DX) 太可怕了。

然后我们切换到 NGXS。

它有最少的样板。你直接进入“行动”:D。

我们对它的 DX 感到高兴。

对于队友来说更容易理解,每个人都是 突然富有成效。

有一些权衡,比如服务器调用在减速器中,但它 一段时间后使用才有意义。

插件!从日志记录到表单处理有很多插件 (太棒了)。

【讨论】:

【参考方案2】:

从我的经验来看,NGXS 更容易编写,并且更容易处理延迟加载状态。它有这么简单的语法,它是 OOP,而不是 Redux FP 范式。装饰你的动作和选择器,订阅记忆状态,在任何地方捕捉调度的动作,等等。

但是,当谈到存储插件时,我发现了一个陷阱,该插件本质上是针对离线优先应用程序的。它使用限制为 5MB 的同步本地存储,当需要将大数据写入存储时会停止 UI。但是,您可以在插件之上编写自定义存储解决方案。它是可扩展的、可扩展的,您可以轻而易举地注入 util 类,文档尽可能简单。

【讨论】:

【参考方案3】:

我最近遇到了 NGRX 的问题,因为我必须调度两个动作,但第二个取决于第一个的成功,问题是 Reducers 异步运行,第二个动作在第一个没有完成的情况下结束,尝试使用 Effects 解决它,但即使发生了同样的事情。使用 NGXS 我可以解决它,因为 Dispacher 在操作结束时返回一个 observable。

总的来说,NGXS 运行得很好,性能也很相似,我不得不在一个有几个嵌套级别的架构中更新大量数据,而且更新时间似乎没有差异。

【讨论】:

你遇到的ngrx问题和我遇到的不一样,我已经用了很长时间了,我相信如果你能发布你的问题,你会找到解决办法的.我在另一个项目中也使用过 ngxs,我认为 ngxs 的主要区别在于插件和 ngxs 中没有效果的事实。通过使用 Immer 和 unionize,我们可以使两者中的样板减少很多。所以一般来说只是偏好 ngrs 中有actions$ 的效果:和ngrx 一样的动作。虽然我仍然很难看到现在使用新的 ngrx 语法如何减少 ngrs 代码。

以上是关于ngrx 和 ngxs 之间的性能差异? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C ++中的malloc和new之间是不是有任何性能差异[关闭]

NGXS 异步操作

NGXS:测试异步操作:自动订阅不起作用

为啥使用 NGRX 而不是构造函数注入服务?

在 NGXS 操作中调用后尝试关闭材料小吃吧不起作用

是否可以在单独的 Angular(子)项目之间共享 NGXS 存储?