将静态数据保存在应用程序中的什么位置(angular 5 和 ngrx/store)?

Where to keep static data in the app (angular 5 and ngrx/store)?

我们有复杂的应用程序,它使用 angular 5 和 ngrx/store。所以我的问题在标题中,我们可以在哪里保存一些静态数据?

比如可以是电影类型列表。我们有时需要它来对一些其他数据进行排序等。它不是可变数据,我们只是在用户首次加载应用程序时从服务器获取一次。我看不出有任何理由将它与商店中的可变数据一起保存。

我看到这样的解决方案:创建共享 reducer 它将在应用程序的每个模块中可用,并且它将保留应用程序的所有静态数据。这是好的解决方案吗?你能和我分享更好的解决方案吗?谢谢!

可能的解决方案之一是服务 (@Injectable())。
您创建了一个服务,它对服务器进行 Http 调用,并且 return 是您数据的 Observable(最好使用 publishReplay,这样新订阅者就不会再次触发 Http 请求)。

一方面,它不会出现在商店中,但另一方面,您仍然可以继续使用 Observables(这在 Angular 中是一件非常方便的事情)。

但是,我会坚持使用商店,因为 Redux 的重点是所有应用程序数据的单一位置。
它更容易调试,更容易维护,嘿,没有人说明天你的不可变数据不会变成可变的。

您为所有静态数据使用单个 reducer 的解决方案不是我会采用的解决方案,因为它破坏了模块化。尤其是新 ngrx 支持您希望商店模块化的功能 - 将逻辑上不同的数据块保存在单独的模块中。