设计一个包含多个 redux 实例的库
Designing a library that contains multiple redux instances
我有一个关于使用 redux 的设计问题要问你。
主要目的是公开一个支持我们应用程序逻辑的库,并将 UI 实现留给库用户。该库将必须与多个服务通信,并且还接收来自外部源的推送事件。
我们的库最初设计为使用 redux + plain javascript。随着我们进一步开发架构,我们在另一个应用程序中遇到了一个困扰我们的问题:我们可能有不同的团队在这个库上工作。这一事实增加了我们 development/deployment 过程的复杂性。
然后我们尝试通过以下方法解决此问题:
- 拥有多个 "instances" redux(每个团队一个)
- 具有包含 API 和异步推送事件的更小的通用代码库
- 调用 API 或外部事件会在每个 redux 实例中触发一个动作
- 新状态在公共代码库中组合在一起
以一些过度工程为代价,这将使我们能够为每个团队和个人部署流程提供不同的代码库(除了必须同步的公共存储库之外,但更直接且不易更改).
您认为这是可行的解决方案吗?
我认为拥有多个商店不是最好的解决方案。我认为最好让每个团队都有自己的常量、动作创建器和缩减器库,这些库将在单个商店中使用。这将使开发跨团队集成变得更加容易,并且代码库最终会更加一致。最重要的是让视图层更加一致和灵活。您不想拥有大量不同的 <Provider />
。最好有多个智能组件。
我认为在应用程序之间使用外部连接器和侦听器不值得这么复杂。那里有一些好处,因为那样你就完全消除了冲突的可能性(尽管我认为你也可以按照我描述的方式做到这一点)。
API 方法无论如何都应该封装在 redux 之外,所以在任何一种情况下都应该工作相同。动作创建者应该导入他们的异步函数,而不是自己使用 fetch
。
我有一个关于使用 redux 的设计问题要问你。
主要目的是公开一个支持我们应用程序逻辑的库,并将 UI 实现留给库用户。该库将必须与多个服务通信,并且还接收来自外部源的推送事件。
我们的库最初设计为使用 redux + plain javascript。随着我们进一步开发架构,我们在另一个应用程序中遇到了一个困扰我们的问题:我们可能有不同的团队在这个库上工作。这一事实增加了我们 development/deployment 过程的复杂性。
然后我们尝试通过以下方法解决此问题:
- 拥有多个 "instances" redux(每个团队一个)
- 具有包含 API 和异步推送事件的更小的通用代码库
- 调用 API 或外部事件会在每个 redux 实例中触发一个动作
- 新状态在公共代码库中组合在一起
以一些过度工程为代价,这将使我们能够为每个团队和个人部署流程提供不同的代码库(除了必须同步的公共存储库之外,但更直接且不易更改).
您认为这是可行的解决方案吗?
我认为拥有多个商店不是最好的解决方案。我认为最好让每个团队都有自己的常量、动作创建器和缩减器库,这些库将在单个商店中使用。这将使开发跨团队集成变得更加容易,并且代码库最终会更加一致。最重要的是让视图层更加一致和灵活。您不想拥有大量不同的 <Provider />
。最好有多个智能组件。
我认为在应用程序之间使用外部连接器和侦听器不值得这么复杂。那里有一些好处,因为那样你就完全消除了冲突的可能性(尽管我认为你也可以按照我描述的方式做到这一点)。
API 方法无论如何都应该封装在 redux 之外,所以在任何一种情况下都应该工作相同。动作创建者应该导入他们的异步函数,而不是自己使用 fetch
。