4.3 KiB
4.3 KiB
| name | description |
|---|---|
| jjb-project-directory-structure | 定义 JJB 微应用标准项目目录结构。在搭建项目、创建 src/pages/api/enumerate/hooks/utils 等目录或查阅 main.js、Container、InjectContext 时使用。 |
项目页面结构
项目目录结构示意图
说明:以下为项目的经典/标准目录结构示意图,展示了微应用的标准文件组织方式。实际项目中的文件结构可能会根据具体需求略有调整,但整体结构保持一致。
项目根目录/
├── public/
│ └── index.html # 项目 HTML 模板
├── src/
│ ├── main.js # 应用入口文件
│ ├── pages/ # 应用页面文件夹
│ │ └── Container/ # 应用页面入口容器(常规页面存放于此,外部页面可直接放在 pages/ 下)
│ │ ├── Entry/ # 应用首页
│ │ ├── UserList/ # 示例:用户列表页
│ │ │ ├── index.js
│ │ │ └── index.less
│ │ └── UserDetail_id/ # 示例:用户详情页(动态路由)
│ │ ├── index.js
│ │ └── index.less
│ ├── components/ # 公共组件目录
│ │ └── CommonButton/
│ │ ├── index.js
│ │ └── index.less
│ ├── api/ # 应用接口服务管理
│ │ ├── user/ # 用户相关接口(小驼峰命名)
│ │ │ └── index.js
│ │ └── order/ # 订单相关接口
│ │ └── index.js
│ ├── enumerate/ # 应用枚举、常量、命名空间
│ │ ├── namespace/ # 命名空间定义
│ │ │ └── index.js
│ │ ├── enum/ # 枚举值
│ │ │ └── index.js
│ │ ├── constant/ # 常量
│ │ │ └── index.js
│ │ └── context/ # React 全局 Context(导出 InjectContext)
│ │ └── index.js
│ ├── hooks/ # 自定义 Hooks 目录
│ │ └── useDict.js # 示例:字典数据 Hook
│ └── utils/ # 工具函数库
│ └── index.js
├── jjb.config.js # 应用配置文件
├── jjb.babel.js # Babel 配置文件
└── package.json
核心文件说明
-
应用入口文件:
src/main.js- 应用的启动入口文件,负责初始化 React 应用、注册路由、注册模型等
-
应用页面文件夹:
src/pages- 存放所有页面组件的根目录
-
应用接口服务管理:
src/api- 存放所有接口定义文件,使用
declareRequest定义接口请求 - 目录命名规范:统一使用 小驼峰(camelCase) 命名
- 存放所有接口定义文件,使用
-
应用枚举、常量、命名空间:
src/enumeratenamespace/:命名空间定义,使用defineNamespace定义enum/:枚举值定义constant/:常量定义context/:React 全局 Context 定义,导出InjectContext上下文
-
自定义 Hooks 目录:
src/hooks/- 用于存放自定义 Hooks,如字典数据 Hook、业务逻辑 Hook 等
- 字典数据获取统一使用 Hooks 方式(详细规范参考
11-接口与数据层规范)
-
应用页面入口容器:
src/pages/Container- 核心职责:
- 作为应用页面入口容器,存放常规路由页面(在底座中访问的页面)
- 负责应用全局主题配置
- 负责
InjectContext上下文注册(值为antd useApp()值) - 可以通过
InjectContext访问antd/App里面的数据
InjectContext来源:InjectContext从src/enumerate/context导出,在src/pages/Container中进行注册和使用- 路由约束说明:详细的路由约束规则请参考
03-页面目录规则
- 核心职责:
-
项目 HTML 模板:
public/index.html- 项目的 HTML 模板文件,支持 EJS 模板语法,可通过
windowInject配置注入外部资源
- 项目的 HTML 模板文件,支持 EJS 模板语法,可通过