用react搭配redux写项目时你们都怎么组织你们的目录结构的?
我知道写的时候又两种结构:
第一种:
——src
——actions
——client.js
——components
——containers
——reducers
——routes
——store
——views
里面的views是什么内容?
第二种:
——src
——auth
——actions
——components
——reducers
——views
——client.js
——components
——containers
——products
——actions
——components
——reducers
——views
——routes
——store
如果项目功能比较复杂,模块比较多可以考虑第二种目录结构。
但是这里为什么没有containers?你们是怎么组织的?能不能发一下你们的项目目录结构?
另外,看到一些人把组件都写在一个文件你的,这样好吗?还是说一个组件就一个文件?不过这样好像又很散
下面这样的结构好不好?哪里需要改进?
——src
——module1/page-1 #其中的一个功能模块,也可以是路由中的一个页面
——actions #模块相关的action
——reducers #模块相关的reducer
——components #模块相关的component
——comp-1.js
——comp-2.js
——containers ##模块相关的container
——cont-1.js
——cont-2.js
——module/page-2
——actions
——reducers
——components
——containers
——client.js
——actions #最外层的action
——reducers #最外层的reducer
——components #最外层的component
——containers #最外层的container
——routes #路由
——store #store
或者你们有没有推荐的目录结构方案?最好详细点,要不然都不知道那些文件和文件夹是干嘛的,有相关对的文章推荐也可以
还是回答的详细一点吧,不然有点水的感觉
========================================================
你说的都挺好的,简单的项目就简单的架构,复杂的项目就复杂点的架构。
基本的东西离不开这几样:
1、action
2、reducer
3、store
4、components
5、router
搭建redux项目之前,要先读几遍redux文档,redux是一个架构框架,react是一个js组件库,如果没有理解框架和库的区别,那么搭建的项目就会不伦不类了。
1、搭建一个基本的redux框架,暂未关联react,相关链接 redux英文文档
2、action本身的框架不复杂,只有3个部分,那么,react又该放在react的哪个位置呢?每个人对工程架构的看法不一样,我说说自己的看法,目前基本可以分为2种方案:
一是react单独放在redux框架之外管理,我看到有些人的答案是这样的;
另外一种方案是react放到redux框架内部管理 redux官方也是这种方案,也是我个人推荐的。
重点讲讲第二种方案吧。为什么我会选择第二种,不是因为迷信官方权威,从我们中国人的思想来说,redux是前端项目的基础框架,既然是框架,无论他和什么js库搭配,都要万变不离其宗,redux就像前端项目的阴阳两极,里面涵盖了所有零零碎碎的各种js、css等资源,我不觉得把react从redux剥离开来管理是一个很好的方案,虽然只是换了个位置,但是不符合框架的思想。就好比你建一栋房子,外层框架是redux,里面装修的各种家具是react组件和样式等。
那么结合react之后的redux框架是个怎样的结构呢。参考 官方todolist方案
看到这里,基本的react-redux框架已经出来了,接下来,就是考虑自定义js插件、json、css、图片等资源的管理问题。js库的管理比较容易,再多定义一个utils包管理各种js插件工具,json资源就定义一个data包管理,难点在于css和图片该如何管理,是单独建立一个包来统一管理还是放到具体的组件内部包去管理呢?
我认为放到具体的组件包去管理对于开发来说有更大的好处,react的核心是组件,在一个前端团队中,每个前端成员都维护自己的组件模块,这些组件不只是js,还有css、图片资源,一个单独的组件包管理维护这些组件对于团队来说非常有效率,每个人写的组件代码互相没有任何影响,你的组件写错了,你去维护你的组件包,我的组件不需要做任何修改,你也不用打开我的组件包去看代码。
说了这么多,具体来看是怎样的一个文件夹模型呢。
在这样一个模型中,假如你负责登录页面的模块,我负责首页模块,那么你只需要维护这么几个部分
1、actions中的login部分
2、components中的login部分
3、containers中的login部分
4、reducers中的login部分
我维护home相关部分的包,完全不会有冲突,要是你的组件出问题了,CTO就会找你算账,不会找到我头上,偶买噶,祝你好运!