首先,要回答您的问题,您应该知道状态管理不是 Angular 的一个术语,您不必使用它。状态管理是一个术语,它定义了我们可以存储数据、修改数据并对其更改做出反应的方式。在我们的例子中,库 NGRX 和 NGXS 使用一种称为CQRS(命令查询责任分离)原则的模式,我引用了 Wikipedia:
它指出每个方法都应该是执行操作的命令,或者是向调用者返回数据的查询,但不能同时是两者。
状态管理充当应用程序的单一事实来源。
您可以构建一个没有复杂状态管理的应用程序。您只能使用服务,一切顺利。向您的应用程序添加状态管理库(例如 NGRX/NGXS)会增加一些复杂性和样板,但随后您将获得以下好处(引自https://stackoverflow.com/a/8820998/1860540):
- 大型团队- 如果您选择了 CQRS 架构,您可以轻松地在人员之间拆分开发任务。您的顶级人员可以处理域逻辑,而将常规内容留给技能较低的开发人员。2.复杂的业务逻辑——CQRS 迫使你避免混合领域逻辑和基础设施操作。3.可扩展性问题- 使用 CQRS,您可以获得出色的读写性能,命令处理可以在多个节点上横向扩展,并且由于查询是只读操作,因此可以优化它们以执行快速读取操作。
最受欢迎的 Angular 状态管理库是NGRX和NGXS。
我不会详细说明 NGRX,但简而言之 - 它已在实际生产应用程序中证明了自己。
然而,NGXS 是一个更年轻的 Angular 状态管理库,它采用了 NGRX 的一些思想,并通过使用 Angular 提供的工具(例如 DI)“授权”它。NGRX 和 NGXS 之间的主要区别在于 NGXS 上的样板文件要少得多。如果您有兴趣,可以阅读Angular 的另一个状态管理的主要原因。
所以总结一下 - 如果您计划构建一个大型应用程序,那么您应该考虑使用状态管理,尽管 - 您不必这样做。