我是Angular的新手,这个问题可能很广泛。但是我有兴趣了解更多有关状态管理用法的信息。最近,我们的项目之一使用NGXS库实现了状态管理。但是,我试图了解它为应用程序带来了什么好处?
实现非常深入,而且层次很高,有一些操作携带应用程序数据(由用户设置),并侦听那些处理请求并按要求分派到下一步的操作。这在应用程序使用或性能等方面与一般的角度应用程序有何不同。我正处于了解状态管理的起步阶段,因此感觉好像我在编写大量的代码,这些代码可能并不是真正需要的。示例-只是为了转到另一个页面,我必须实现一个状态模式来保存该对象并声明一个动作,并使用一个侦听器来实现该动作。
我正在阅读一些文档,并获得有关如何实施状态管理的详细信息,但没有获得为什么应实施状态管理的正确答案。
提前谢谢!
答案 0 :(得分:9)
首先,要回答您的问题,您应该知道“状态管理”不是Angular的术语,并且您不必使用它。状态管理是一种实现CQRS原则的模式,我引用Wikipedia:
它指出,每个方法都应该是执行操作的命令,或者是将数据返回给调用方的查询,但不能两者都提供。
状态管理充当您应用程序的单一事实来源。
您可以在没有状态管理的情况下构建应用程序。您只能使用服务,而且一切顺利。在应用程序中添加状态管理会增加一些复杂性和样板,但是您将获得以下好处(引自https://stackoverflow.com/a/8820998/1860540):
- 大型团队-如果您选择了CQRS体系结构,则可以轻松地在人与人之间划分开发任务。您的高层人员可以从事域逻辑方面的工作,而将常规知识留给技术水平较低的开发人员。
- 困难的业务逻辑-CQRS强制您避免混合使用域逻辑和基础架构操作。
- 可伸缩性很重要-使用CQRS,您可以实现出色的读写性能,可以在多个节点上扩展命令处理,并且由于查询是只读操作,因此可以对其进行优化以进行快速读取操作。
我不会详细介绍NGRX,但是简而言之-它已在实际生产应用中证明了自己的能力。
但是,NGXS是一个年轻的angular状态管理库,它采用了NGRX的一些思想,并通过使用Angular提供的工具(例如DI)“赋予”了它权力。 NGRX和NGXS之间的主要区别在于,NGXS上的样板明显更少。如果您有兴趣,可以阅读Why another state management for Angular的主要原因。
因此,总而言之-如果您打算构建大型应用程序,则应该考虑使用状态管理,尽管-您不必这样做。
答案 1 :(得分:2)
免责声明:我是图书馆的作者
Angular 中的简单状态管理,只有服务和 RxJS。
您可以尽可能简单地在组件之间共享状态,并利用组件状态的优点和 Angular 的依赖注入系统。