构建大型redux项目的更好方法是什么?

时间:2016-10-24 17:27:12

标签: javascript reactjs redux react-redux

我最近开始使用Redux,到目前为止一切都进展顺利。但是,随着我的应用程序的增长,我开始质疑它的结构的最佳实践。大多数教程和文档都给出了非常小的例子,所以我不确定我应该采取什么方向。

基本上我的应用程序非常庞大,并且它在各个模块中分开,这些模块完全相互独立。

根据我的理解,应用程序只做一件事,所以我正在编写我的代码,考虑每个单独的模块它自己的应用程序,因为它们是完全独立的,每个都做一个完全不同的任务。

就像现在一样,我构建的方式是每个模块都有自己的小型redux结构。所以文件夹如下:

- module1
   - actions
   - reducers
   - containers
   - components

- module2
  - actions
  - reducers
  - containers
  - components
  ...

显然,他们将所有内容放在一个主App文件中,然后将它们全部路由到。

随着我的应用程序的增长,我很遗憾地注意到很多代码实际上都在重复。所以我开始怀疑我的方法是否在适当的情况下是正确的,或者如果最好只与所有模块共享所有内容,那么排序如下:

- actions
  -module1Actions
  -module2Actions
- reducers
  -module1Reducers
  -module2Reducers
- containers
  -module1Containers
  -module2Containers
- components
  -module1Components
  -module2Components

有人可以了解哪种方法更好?

2 个答案:

答案 0 :(得分:1)

有很多React / Redux应用程序结构的方法。还有很多方法可以更好地封装逻辑和功能块。 Redux的一个权衡因素是全局状态使应用程序级别的内容更容易处理,但封装可能更难。

我的React/Redux links list有两个相关信息类别。我有一篇关于React/Redux project structure的文章。还有许多文章和代码尝试试图解决完全封装和可重复使用的逻辑块"问题。我在Redux Techniques#Encapsulation部分提供了这些文章和讨论的链接。

在一个半相关的说明中,有一大堆lib试图帮助解决Redux中的"每个组件状态"概念。他们中的大多数基本上都设置了状态的顶级片段,并存储了由ID键入的组件数据,并且有方法为组件生成ID。我在Redux addons catalog页面的Component State中找到了他们的列表。我自己还没有真正尝试过任何一种,只是将它们编目。

最后,Redux FAQhttp://redux.js.org/docs/faq/CodeStructure.html#structure-file-structure上有关于该主题的一些相关信息。

答案 1 :(得分:0)

是的,你的方法是绝对正确的 - 并且很多样板代码(这是非常难以避免的)只是Redux的一个特性,而不是bug。因此,惯用应用程序有很多模块,就像你一样。

不幸的是,很难统一它,因为从项目到项目,减速器是非常独特的,所以我不知道任何成功和流行的实现。有一个mobX库,它可以消除合并状态(因为你可以在那里改变数据),但它似乎只适用于小项目。

所以,根据我自己的经验,我可以给你的一个建议就是编写 modules factory ,这将产生动作,减少器和选择器,如果你的端点有类似的结构,什么时候会减少很多样板。但是,独特的东西(比如登录)基本上不可能一概而论。