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 之间的性能差异? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章