制定项目规范
编码规范
编码规范和辅助工具可以参考前一篇
下面介绍的项目规范制定主要以 react 单页面应用为例
技术栈
- Typescript
- React Hook
- Less
- webpack
公用库
公用库列举了一些高效可靠的第三方库,项目中需要优先考虑使用这些库,而不是其他类库,避免增加不必要的重复依赖
ant-design
- UI 组件库ahooks
- 工具 hookslodash
- js 工具库axios
- 请求库
命名规范
- 变量&函数命名:小驼峰 userId
- 常量命名:大写字母下划线 USER_ID
- 文件夹&文件命名:中划线 user-id
- Class 命名:大驼峰 UserId
- 组件导出命名:大驼峰 UserId
- ts-interface:I 开头+大驼峰
- ts-enum:E 开头+大驼峰
- ts-type:T 开头+大驼峰
项目结构
主要是指 src 文件夹下的目录结构。目录其实可以有多种组织方式,主要不是很难理解的目录结构都可以,讲究先入为主。以我们项目结构为例:
src
├─ assets
│ ├─ css # 全局样式
│ ├─ icon
│ └─ image
├─ containers # 页面组件
├─ components # 公共组件
├─ helper # 存放工具函数或者业务抽象函数
│ ├─ utils # 工具函数
│ ├─ hooks # 公共 hooks
│ └─ service.ts # 请求函数
├─ type # 全局类型
├─ store # 状态管理
└─ ...
环境配置
可以通过 cross-env
配置,当然也有其他方案,比如 dotenv
主要原理是通过执行不同的 script 命令注入指定的环境变量,然后 cross-env
会自动处理 windows 和其他 unix 系统在设置环境变量的写法上不一致的问题
调整 package.json
,示例如下:
"scripts": {
"start": "cross-env REACT_APP_NODE_ENV=dev react-app-rewired start",
"build:test": "cross-env REACT_APP_NODE_ENV=test react-app-rewired build",
"build": "cross-env REACT_APP_NODE_ENV=prod react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-app-rewired eject"
},
在构建期间,process.env.REACT_APP_NODE_ENV
将替换为 REACT_APP_NODE_ENV
环境变量的当前值
主要的环境分类有:
- 开发(DEV)
- 测试(UAT)
- 生产(PROD)
webpack 配置
alias
@ -> src
路由配置
建议使用页面懒加载,缩减首屏时间
数据管理
- redux
- mobx
各有优缺点,按需选择;不过都会有一些模板代码,可以预设相关的代码
接口调用
- axios 封装基础请求函数,负责请求拦截、响应拦截、定义 baseUrl 等
- 请求函数,调用基础请求函数,负责配置 api url、参数转换等
- 业务层基于 useRequest 调用请求函数
备注
以上这些项目规范其实都需要额外配置,详细配置和代码可以参考怎么去创建一个新的 react 项目,以及可能还有 CI 配置、dockerfile 等,建议通过定制脚手架的方式自动化配置