2

目前,我从 Firestore 获取数据,然后将其修补到状态中。我也使用 NGXS 存储插件。

这一切都有效,但似乎是多余的。

当我获取状态时,我使用常规和加入的@Selectors 的组合。这意味着我没有利用 Firestore 查询选项,我的代码最终在大小和复杂性方面变得臃肿。

当使用带有 enablePersistence 的 Firestore 时,真的需要 NGXS 吗?

可以做些什么来简化架构?

提前致谢 :)

4

1 回答 1

1

NGXS / ngrx 可以帮助您管理应用程序中的状态。这可以包括重要的东西,如实际数据,或不重要的项目,如复选框的状态、下拉列表中的选择。

在大型应用程序中,您想知道 UI 的确切状态,状态管理库可能很有用,因为它提供了一个不可变的 UI 状态,而不是您可以做出反应的 observable。

在您的情况下,Firestore 可以存储您的数据,并在您的数据更改时提供事件源(可观察)。但这是您实际的重要数据。您不会将用户放入数据网格的过滤器存储在 firestore。您不会在那里存储路由器的当前路线或他想要的应用程序主题的颜色。

NGXS 可以存储你的这部分状态,firestore 不应该存储。如果您不使用 NGXS,那么您就不会一成不变地管理该状态,这可能很重要,也可能不重要(如果您不太介意 UI/UX 中的不一致,这没什么大不了的)


让我们假设您不太关心愚蠢的 UI 状态(按钮颜色等)。

将您的 firestore 状态放入 redux 存储中,具有以下优势:

  1. 你抽象了firestore。如果明天你认为 firestore 太贵,或者 waterstore 做得更好,你可以切换到它,你的应用程序不会知道其中的区别,因为你的应用程序依赖于 NGXS。

  2. 其他知道如何使用 Redux 的开发人员可以更轻松地推断您的应用程序。

  3. 您可以完全控制您的状态,而不是 Firestore。Firestore,尽管它很棒,但它是一个黑匣子。使用 NGXS,您可以在应用程序发生变化时进行全面管理,并采取适当的措施导致它发生变化。例如,当发生错误时,您可以将前 10 个状态 + 最后一个操作发送到日志服务器,然后在您的机器上重播。使用 Firestore,您不知道发生更改的方式或原因。

于 2018-10-25T09:44:00.387 回答