Kev*_*ing 50 state-management ngrx-store angular5 angular6
我最近在@ngrx/store学习Angular 6,而其中一个教程是使用@ngrx/store进行状态管理,但我不明白在场景后面使用@ngrx/store的好处.
例如,对于简单的登录和注册操作,以前通过使用该服务(让我们称之为AuthService),我们可以使用它来调用后端api,在AuthService中存储"userInfo"或"token",将用户重定向到"HOME"在我们需要通过使用DI获取userInfo的任何组件中注入AuthService,只需要一个文件AuthService处理所有内容.
现在,如果我们使用@ngrx/store,我们需要定义Action/State/Reducer/Effects/Selector,它可能需要写入4或5个文件来处理上述动作或事件,然后有时我们还需要调用backend api使用服务,这看起来要复杂多余......
在其他一些场景中,我甚至看到一些页面使用@ngrx/store来存储对象或对象列表,如网格数据.,是对某种内存存储使用情况的?
回到这个问题,为什么我们在Angular项目中使用@ngrx/store而不是服务注册存储? 我知道这是用于" 国家管理 "的用法,但究竟什么是"国家管理"?这是什么类似事务日志,我们什么时候需要它?我们为什么要在前端管理它?请随时在@ngrx /商店区分享您的建议或经验!
Jea*_*ier 26
我想你应该阅读关于Ngrx商店的那两篇帖子:
如果第一个解释了Ngrx Store解决的主要问题,它还引用了React How-To中的这个声明"这似乎同样适用于原始的Flux,Redux,Ngrx Store或任何商店解决方案":
你会知道什么时候需要Flux.如果您不确定是否需要它,则不需要它.
对我来说,Ngrx商店解决了多个问题.例如,当您必须处理可观察对象以及在不同组件之间共享某些可观察数据的责任时.在这种情况下,存储操作和缩减器确保始终以"正确的方式"执行数据修改.
它还为http请求缓存提供了可靠的解决方案.您将能够存储请求及其响应,以便您可以验证您所做的请求尚未存储响应.
第二篇文章是关于是什么让这些解决方案在Facebook的未读消息计数器问题出现在React世界中.
关于在服务中存储不可验证数据的解决方案.当您处理常量数据时,它可以正常工作.但是,当多个组件必须更新此数据时,您可能会遇到更改检测问题和不正确的更新问题,您可以使用以下方法解决:
dal*_*ows 18
我与 NgRx 合作已经三年多了。我在小型项目中使用了它,它很方便但不必要,并且我在非常适合的应用程序中使用了它。与此同时,我有机会参与一个没有使用它的项目,我必须说它会从中受益。
在当前的项目中,我负责设计新的 FE 应用程序的架构。我的任务是完全重构现有的应用程序,该应用程序为了满足相同的需求而使用非 NgRx 方式,并且存在缺陷,难以理解和维护,并且没有文档。我决定在那里使用 NgRx 并这样做是因为以下原因:
可以看到,不符合标准的CRUD操作网页的要求。以“Angular”方式进行操作给代码带来了如此复杂的程度,以至于变得非常难以维护,最糟糕的是,当我加入团队时,最后两名原始成员离开时没有任何定制的非 NgRx 解决方案的文档。
现在,自从使用 NgRx 重构应用程序一年后,我想我可以总结一下优点和缺点。
优点:
缺点:
作为结论,我想说,就我们而言,NgRx 是一个不错的选择。一开始要求很高,但后来一切都感觉自然且合乎逻辑。另外,当您检查要求时,您会发现这是一个特殊情况。我理解反对 NgRx 的声音,在某些情况下我会支持他们,但不会支持这个项目。我们可以使用“Angular”方式来完成它吗?当然,以前也是这么干的,但是搞得一塌糊涂。它仍然充满了样板代码,事情发生在不同的地方,没有明显的原因等等。
任何有机会比较这两个版本的人都会说 NgRx 版本更好。
我几乎只阅读 Ngrx 和其他 Redux 之类的商店库的好处,而(在我看来)代价高昂的权衡似乎太容易了。这通常是我看到的唯一原因:“不使用 Ngrx的唯一原因是您的应用程序小而简单”。我会说,这只是不完整的推理,还不够好。
以下是我对 Ngrx 的抱怨:
对我来说,Ngrx 的底线看起来不太好。
还有第三个选项,例如,在服务中提供数据并直接在html中使用服务*ngFor="let item of userService.users"。因此,当userService.users在HTML中自动呈现添加或更新操作后在服务中进行更新时,不需要任何可观察对象,事件或存储。
如果应用程序中的数据在多个组件中使用,则需要某种共享数据的服务。有很多方法可以做到这一点。
一个中等复杂的应用程序最终将看起来像一个前端后端结构,在服务中完成数据处理,通过可观察量将数据暴露给组件。
有时,您需要为数据服务编写某种 api,如何输入和输出数据、查询等。许多规则,例如数据的不变性,以及定义明确的修改数据的单一路径。与服务器后端没有什么不同,但比 API 调用更快、响应更快。
您的 api 最终看起来就像是已经存在的众多状态管理库之一。它们的存在是为了解决难题。如果您的应用程序很简单,您可能不需要它们。
| 归档时间: |
|
| 查看次数: |
11764 次 |
| 最近记录: |