4

我们目前有一个中型 Angular 6 (prod bundle = 5MB) 应用程序,它实现了 ngrx/store 作为状态管理。

我们选择 ngrx/store 是因为当时(NG2)每个人都使用它,并且以这种方式存储状态和访问状态似乎是个好主意。换句话说:错误的原因。

它越来越像一个不需要的间接层,因为服务可以保持状态并返回流以访问应用程序状态的一部分,而样板文件要少得多(即使使用 NGXS)。

问题

从架构的角度来看,为什么我们会选择 ngrx/store 或 NGXS 而不是普通的有状态服务?

请只讨论现实世界的论点,不要理论或纯粹主义的论点。

如果处理得当,一些带有少量流的普通 @Injectable 服务会产生干净的代码、没有样板代码和状态的全部责任。即使是不变性也可以很容易地由我们自己处理。

(是的,我知道如果你让它们正常工作,比如在 HMR 中恢复状态和检查状态,会有一些技术优势,但我们从来没有得到一致且正常的工作)

4

1 回答 1

4

使用 NgRX 有几个很好的理由:

1)它可以防止你需要大量的小服务,这些服务比单个 NgRx 存储更难管理和跟踪。

2)商店提供客户端缓存,因此您无需每次都从服务器重新获取数据......仅在您需要时。是的,您也可以在自己的服务中做到这一点,只需使用更多代码。

3) 使用选择器,任何组件都可以很容易地收到对特定数据的任何更改的通知,从而使整个系统的通知变得容易……即使更改为多个页面。同样,您可以使用 Subject/BehaviorSubject 在自己的服务中执行此操作,但为什么要重新发明轮子。

4) 可以使用 Angular CLI 生成标准模式和流程,从而更容易确保应用程序的所有代码保持一致。

5)您可以使用调试工具轻松查看发生了什么。在我最近的几次演讲中,许多开发人员想要迁移到 NgRX只是为了这个特性。:-) 你说你很难让它正常工作?

在此处输入图像描述

于 2018-07-17T18:41:26.133 回答