代码之家  ›  专栏  ›  技术社区  ›  ac184

什么是状态管理?我为什么要用它?

  •  4
  • ac184  · 技术社区  · 6 年前

    我是新来的角度和这个问题可能是非常广泛的。但我有兴趣学习更多关于状态管理用法的知识。最近,我们的一个项目使用NGXS库实现了状态管理。然而,我试图了解它给应用带来的所有好处是什么?

    我正在阅读一些文档,了解如何实施状态管理的细节,但没有得到为什么应该实施状态管理的正确答案。

    提前谢谢!

    1 回复  |  直到 6 年前
        1
  •  34
  •   Eliya Cohen    4 年前

    首先,要回答您的问题,您应该知道状态管理不是一个角度的术语,您不必使用它。状态管理是一个术语,它定义了我们存储数据、修改数据以及对数据更改作出反应的方式。在我们的例子中,库NGRX和NGXS使用一种称为 CQRS (Command Query Responsibility Segregation) 原则,我引用维基百科:

    它指出每个方法要么是执行操作的命令,要么是向调用者返回数据的查询,但不能两者兼而有之。

    你可以不用复杂的状态管理来构建一个应用程序。你只能使用服务,你就可以走了。在应用程序中添加一个状态管理库(例如NGRX/NGXS)会增加一些复杂性和样板文件,但是这样做的好处是(引用自 https://stackoverflow.com/a/8820998/1860540 ):

    1. 大团队 -如果您选择了CQRS体系结构,那么您可以轻松地在人员之间划分开发任务。你的高层人员可以在域逻辑上工作,把常规的东西留给技能较差的开发人员。 2 困难的业务逻辑 -CQRS迫使您避免域逻辑和基础结构操作的混合。 三。 可扩展性很重要

    美国最流行的状态管理库是 NGRX NGXS .

    我将不详细介绍NGRX,但简而言之,它已经在实际生产应用中证明了自己。

    然而,NGXS是angular的一个较年轻的状态管理库,它采用了NGRX的一些思想,并通过使用angular提供的工具(比如DI)来“授权”NGRX。NGRX和NGXS之间的主要区别在于,您的样板文件在NGXS上明显较少。如果你感兴趣,你可以读一下主要原因 Why another state management for Angular

    总之,如果您计划构建一个大规模的应用程序,那么您应该考虑使用状态管理,尽管您不必这样做。