ngrx和ngxs之间的性能差异?

Max*_*x K 7 redux ngrx angular ngxs

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

但我不确定大项目是否成熟.

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

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

Eug*_*nic 14

以下是Reddit (Angular2 +社区)的好答案.它来自开发人员,他们测试了两者并切换到NGXS.

我想分享一下我的经验.我们有一个中型企业应用程序.我们从NGRX开始,但很快就明白了

NGRX代码很难理解并写给队友.

NGRX是样板地狱.你花了很多时间.

"效果"的概念很好,但它只是增加了可以简化的额外复杂层.

开发者体验(DX)令人恐惧.

然后我们切换到NGXS.

它具有最小的样板.你直接进入"行动":D.

我们很高兴它的DX.

对队友来说要容易理解,而且每个人都突然变得富有成效.

有一些权衡,例如服务器调用是在reducer中,但是在一段时间后使用它是有意义的.

插件!从登录到表单处理有很多插件(很棒的东西).


Log*_*gus 12

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

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


小智 9

最近NGRX有问题,因为我不得不分派两个动作,但是第二个取决于第一个动作的成功,问题是Reducers异步运行,第二个动作没有完成第一个动作就结束了,尝试用 Effects 解决它,但即使在那里也发生了同样的事情。使用 NGXS 我可以解决它,因为 Dispacher 在动作结束时返回一个可观察的对象。

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

  • 您在 ngrx 中遇到的问题与我遇到的任何问题都不一样,我已经使用它很长时间了,我相信如果您可以发布您的问题,您会找到解决方案。我在另一个项目中也使用过 ngxs,我认为 ngxs 的主要区别在于插件以及 ngxs 中没有效果这一事实。通过使用 Immer 和 Unionize 我们可以使两者的样板都减少很多。所以一般来说这只是偏好 (2认同)