【发布时间】:2018-12-25 13:08:30
【问题描述】:
我们目前有一个中型 Angular 6(prod bundle = 5MB)应用程序,其中 ngrx/store 实现了状态管理。
我们选择 ngrx/store 是因为当时 (NG2) 每个人都使用它,并且以这种方式存储状态和访问状态似乎是个好主意。 换句话说:错误的原因。
感觉越来越像一个不需要的间接层,因为服务可以保持状态并返回流以访问应用程序状态的一部分,而样板文件少得多(即使使用 NGXS)。
问题
从架构的角度来看,我们为什么要选择 ngrx/store 或 NGXS 而不是普通的有状态服务?
请只讨论现实世界的论点,不要理论或纯粹的论点。
如果处理得当,一些带有少量流的普通 @Injectable 服务会产生干净的代码、没有样板代码和状态的全部责任。即使是不变性,我们也可以轻松处理。
(是的,我知道如果你让它们正常工作,比如在 HMR 中恢复状态和检查状态,会有一些技术优势,但我们从来没有让它们始终如一地正常工作)
【问题讨论】:
-
我在这里遇到同样的问题。
-
所有解决方案都暗示使用贫血数据模型,即没有行为的普通对象。这样,您就不能对其进行强制验证或以任何其他方式确保模型实际上处于一致状态。此外,我不喜欢依赖 Store 来选择和调度,而不仅仅是我真正使用的状态对象......与 NGRX 相比,NGXS 使它更符合 Angular,但在这些方面它仍然是间接的.
-
这篇博文涵盖了您需要的所有信息,并且在总体上理解应用程序状态管理方面也提供了非常丰富的信息。读一读:Angular Application State Management: You Do (Not) Need External Data Stores
标签: angular ngrx-store ngxs