设计包含多个redux实例的库

时间:2015-10-29 15:30:04

标签: architecture redux

使用redux时,我有一个设计问题。

主要目的是公开一个支持我们应用程序逻辑的库,并将UI实现留给库用户。该库必须与多个服务进行通信,并且还接收来自外部源的推送事件。

我们的库最初设计为使用redux + plain javascript。随着我们进一步开发架构,我们在另一个应用程序中遇到困扰我们的问题:我们可能有不同的团队在这个库上工作。这一事实增加了我们的开发/部署过程的复杂性。

然后我们尝试用以下方法解决这个问题:

  • 拥有redux的多个“实例”(每个团队一个)
  • 拥有包含API和异步推送事件的小得多的公共代码库
  • 对API或外部事件的调用会在redux的每个实例中触发操作
  • 新状态在公共代码库中组合在一起

以过度工程化为代价,这将使我们能够为每个团队和单独的部署流程提供不同的代码库(除了必须同步但更直接且更不易于更改的公共仓库)。

您认为这是可行的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我认为拥有多家商店并不是最佳解决方案。我认为让每个团队拥有自己的常量库,动作创建器和减速器会更好,这些常量库将在单个商店中使用。这将使开发跨团队集成变得更加容易,并且代码库最终会更加一致。最重要的是使视图层更加一致和灵活。你不想拥有大量不同的<Provider />。拥有多个智能组件会更好。

我不认为在应用程序之间使用外部连接器和监听器是值得的复杂性。那里有一些好处,因为那样你就完全消除了冲突的可能性(虽然我认为你可以用我描述的方式做到这一点)。

API方法应该在redux之外封装,所以在任何一种情况下都应该相同。动作创建者应该导入他们的异步函数,而不是自己使用fetch