31

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

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

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

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

4

3 回答 3

48

这是 Reddit (Angular2+ community)的好答案。它来自一个测试过两者并切换到 NGXS 的开发人员。

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

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

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

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

开发人员体验 (DX) 令人恐惧。

然后我们切换到 NGXS。

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

我们对它的 DX 感到高兴。

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

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

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

于 2018-10-03T17:26:48.867 回答
12

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

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

于 2018-09-25T22:35:03.667 回答
9

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

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

于 2018-10-05T18:22:14.607 回答