角度状态管理-存储还是状态服务?

时间:2018-07-17 18:22:48

标签: angular ngrx-store ngxs

我们目前有一个中型Angular 6(产品捆绑包= 5MB)应用程序,已实现ngrx / store作为状态管理。

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

感觉越来越像不需要层的间接层,因为服务可以保持状态并以更少的样板(甚至使用NGXS)返回流以访问应用程序状态的部分。

问题

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

请仅提供真实世界的论点,不得提供理论或纯粹论点。

如果正确处理了一些带有少量流的纯@Injectable服务,则会产生干净的代码,没有样板代码,并完全负责状态。甚至不变性也可以很容易地自己解决。

(是的,我知道,如果您使它们正常工作,例如在HMR中恢复状态并检查状态,则有一些技术优势,但是我们永远无法始终如一地正常工作)

1 个答案:

答案 0 :(得分:4)

使用NgRX的理由很多:

1)它可以防止您到处需要很多小服务,而这些服务比单个NgRx存储要难得多。

2)存储提供了客户端缓存,因此您不需要每次都从服务器重新获取数据……仅在需要时。是的,您也可以通过更多代码在自己的服务中做到这一点。

3)使用选择器,可以轻松地向任何组件通知对特定数据的任何更改,即使在更改为多个页面时,也可以轻松地在整个系统中进行通知。同样,您可以使用Subject / BehaviorSubject在自己的服务中执行此操作,但是为什么要重新发明轮子呢?

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

5)您可以使用调试工具轻松查看发生了什么。在我的最后几场演讲中,许多开发人员都希望使用NgRX just 来获得此功能。 :-)您说您无法正常工作?

enter image description here