2017-10-11 93 views
1

我们正在开发一个应用程序,其中我们需要一些共享数据,例如在不同的组件模块中。Angular2.0中的状态管理+

我们不能将它存储在本地或全局存储中,因为它是敏感信息,所以我们不希望用户可以打开开发人员工具并从那里查看数据。

我已经探索过我们,了解我的是我们可以使用Redux或RXJS。

我想实现它通过Redux的任何人可以帮助我有什么需要做的,如果我想存储简单的用户名,国家,其对商店的纬度和我怎样才能使用它们

回答

3

是你的研究已经登陆你在完美的位置。但我想说你也可以用其他方式。

关于NGRX

首先什么是终极版?

终极版是JavaScript应用程序的应用状态管理器,并 通过在应用程序中的 单向数据流保持与通量架构的核心原则。 Redux应用程序只有一个全局的只读应用程序状态。通过在控制方式下更新它的操作集合或操作流程“减少”来计算该状态 。

Redux In Angular?

Redux的状态经理一直很受欢迎和有启发 创造@ngrx的,一组实现的 以同样的方式管理国家,以及一些中间件和工具在 终极版模块生态系统。 @ngrx创建时专门用于 Angular和RxJS,因为它非常依赖可观察的范例。无论 你在上面看到的部件均采用NGRX店(更新至 V4)现在升级的优势,我们有懒加载支持管理 直接使用NGRX特色模块

凡使用它?

一个小场景将使它的使用相当明确

我希望你可能已经使用Facebook的右:P所以如果你看@ Facebook的网站,你将看到导航栏的多个组件,左 面板,聊天室等。有没有想过当一个新的消息传递到 你所有这些都同时更新如何?如果他们去 srevices或事件发射器,他们将被吞噬在 海面意大利面代码。即使实施将很难调试 或进行更改。

这里是使用ngrx状态管理的所有信息是 存储在一个地方,当数据的状态改变时,所有组件都被识别。看看堆栈溢出的这个答案 将清除更多的概念图像清晰。

共享服务

共享服务是什么,但更小的实现NGRX的和基于对观测。我会建议,如果你的应用程序的规模是巨大的,然后去ngrx其他共享服务。

查看链接了解更多关于同样的信息以及如何使用它们。

+0

我试图使用共享服务,但共享服务的问题是如果我们必须刷新页面或重新加载它所有的数据丢失,我们必须再次击中数据库。 – user3886602

+0

我们可以有一个实时应用程序类型的实现或链接,无论我只有这个增量和减量:) – user3886602

+0

@ user3886602同样将与国家管理,你需要有某种形式的警卫,如果这样的事情发生的服务 –

1

Redux在“Redux项目”意义上不适用于Angular。但是,Redux可以以多种方式用作模式 - 这是Redux最重要的部分。

NGRX

一条路可走会NGRX。该项目受到Redux模式的启发,但实际上将RxJs用于状态管理,所以它可能实际上就是您要查找的内容 - 如果您正在寻找一种现成的解决方案。除了状态管理,NgRx还提供开发工具和与路由器的集成。我可以在这里总结一下设置,但在@ngrx/store本身的自述文件中有一个非常清晰的演练:https://github.com/ngrx/platform/blob/master/docs/store/README.md

集服务

如果不希望增加的依赖,则可以简单地具有单独服务。角度体系结构是以层次化方式理解依赖注入的。

只要服务由同一个注入器提供,服务将是单例服务器;但是,您可以指示注入系统在逻辑组件树中向上看,但是根据您的问题,这可能对于您要查找的内容太复杂。

也许提供应用程序范围服务来存储用户数据的最简单方法是将服务声明为根注入器或应用程序注入器的提供者。一个常见的模式是这里看到的forRoot模式:https://angular.io/guide/ngmodule#configure-core-services-with-coremoduleforroot

希望这会有所帮助!