模块架构
Dux Refine 采用了应用式开发架构,即每个目录都代表一个独立的模块。模块内部的 index.js
文件被用作入口配置,框架会根据入口配置来初始化加载相应的路由、资源、多语言和其他配置。只要 pages
目录下的子目录内有一个 index.{js,ts,jsx,tsx}
文件,就会被视为一个独立的模块。
TIP
这种架构的优点在于模块化和低耦合性,多个模块之间可以轻松地共享或删除,同时模块内部没有特定的目录结构,完全可以根据需要进行自定义。
以下提供了两种目录结构方式,您可以根据喜好选择其中之一:
管理端式结构
将不同的管理端划分为一个模块,每个模块包含了该管理端的功能。这种方式适用于功能相对简单的项目,无需过于复杂的结构。
sh
.
├── pages # 页面文件
│ └── admin # admin 管理端
│ ├── category # 分类页面
│ ├── article # 文章页面
│ ├── role # 角色页面
│ ├── user # 用户页面
│ └── index.tsx # 模块配置
│ └── store # store 管理端
│ ├── category # 分类页面
│ ├── article # 文章页面
│ ├── role # 角色页面
│ ├── user # 用户页面
│ └── index.tsx # 模块配置
.
├── pages # 页面文件
│ └── admin # admin 管理端
│ ├── category # 分类页面
│ ├── article # 文章页面
│ ├── role # 角色页面
│ ├── user # 用户页面
│ └── index.tsx # 模块配置
│ └── store # store 管理端
│ ├── category # 分类页面
│ ├── article # 文章页面
│ ├── role # 角色页面
│ ├── user # 用户页面
│ └── index.tsx # 模块配置
应用式结构
将相关联的功能划分为一个模块,每个模块内再根据不同的管理端进行进一步划分。这种方式适用于功能比较复杂的项目,可以提供清晰的功能分组管理。
sh
.
├── pages # 页面文件
│ └── manage # 管理模块
│ ├── admin # admin 管理端
│ │ ├── role # 角色
│ │ └── user # 用户
│ ├── store # store 管理端
│ │ ├── role # 角色
│ │ └── user # 用户
│ └── index.tsx # 模块配置
│ └── content # 内容模块
│ ├── admin # admin 管理端
│ │ ├── category # 分类页面
│ │ └── article # 文章页面
│ ├── store # store 管理端
│ │ ├── category # 分类页面
│ │ └── article # 文章页面
│ └── index.tsx # 模块配置
.
├── pages # 页面文件
│ └── manage # 管理模块
│ ├── admin # admin 管理端
│ │ ├── role # 角色
│ │ └── user # 用户
│ ├── store # store 管理端
│ │ ├── role # 角色
│ │ └── user # 用户
│ └── index.tsx # 模块配置
│ └── content # 内容模块
│ ├── admin # admin 管理端
│ │ ├── category # 分类页面
│ │ └── article # 文章页面
│ ├── store # store 管理端
│ │ ├── category # 分类页面
│ │ └── article # 文章页面
│ └── index.tsx # 模块配置
如果您的项目当前或未来不需要支持多个管理端,我建议您选择单一管理端结构:
sh
.
├── pages # 页面文件
│ └── manage # 管理模块
│ ├── role # 角色
│ └── user # 用户
│ └── index.tsx # 模块配置
│ └── content # 内容模块
│ ├── category # 分类页面
│ └── article # 文章页面
│ └── index.tsx # 模块配置
.
├── pages # 页面文件
│ └── manage # 管理模块
│ ├── role # 角色
│ └── user # 用户
│ └── index.tsx # 模块配置
│ └── content # 内容模块
│ ├── category # 分类页面
│ └── article # 文章页面
│ └── index.tsx # 模块配置