首先,要回答你的问题,你应该知道状态管理不是一个Angular 的术语,你不必使用它.状态管理是一个术语,定义了我们存储数据、修改数据并对其更改做出react 的方式.在我们的例子中,NGRX和NGXS库使用了一种称为CQRS (Command Query Responsibility Segregation)原则的模式,我引用维基百科的话:
它指出,每个方法要么是执行操作的命令,要么是向调用方返回数据的查询,但不能两者兼而有之.
状态管理是应用程序的唯一真实来源.
你可以不用复杂的状态管理来构建应用程序.你只能使用服务,而且你可以随时使用.向应用程序中添加状态管理库(例如NGRX/NGXS)会增加一些复杂性和样板文件,但这样做会带来以下好处(引用自https://stackoverflow.com/a/8820998/1860540):
- Large team-如果您 Select 了CQRS体系 struct ,您可以轻松地在人与人之间分割开发任务.你的高层人员可以处理域逻辑,把常规的东西留给技能较低的开发人员.
最受欢迎的Angular州管理库是NGRX和NGXS.
我不会详细介绍NGRX,但简而言之,它已经在实际生产应用中证明了自己.
然而,NGXS是angular的一个较年轻的状态管理库,它采纳了NGRX的一些 idea ,并通过使用angular提供的工具(如DI)对其进行"授权".NGRX和NGXS之间的主要区别在于,NGXS上的样板文件要少得多.如果你感兴趣,你可以阅读主要原因Why another state management for Angular.
总之,如果你正在计划建立一个大规模的应用程序,那么你应该考虑使用状态管理,尽管你不必这么做.