该项目由 Create React App 提供技术支持
- node >= 8.9.0
- typescript >= 3.0
- yarn >= 1.14.0 or npm >= 6.7.0
- git >= 2.10.1
- GitLens
- Auto Close Tag
- Auto Rename Tag
- ES7 React/Redux/GraphQL/React-Native snippets
- TSLint
- Path Autocomplete
- Bracket Pair Colorizer
- TODO Highlight
- Code Spell Checker
在该项目目录下, 你可以运行以下命令:
yarn start
or npm start
以开发模式运行该项目 然后打开Chrome浏览器访问http://localhost:3000.
yarn mock
or npm run mock
运行mock模拟数据服务, 启动后可以用Chrome浏览器访问http://localhost:3031 查看模拟数据服务是否启动 相关详情请阅读json-server, faker
yarn test
or npm test
以监控模式运行Jest测试用例,编写测试的时候可以用此命令 相关详情请阅读running tests
yarn jest
or npm jest
以普通模式运行Jest测试用例
yarn build
or npm run build
构建生产资源到 build
目录, 此时环境变量为production
相关详情请阅读 deployment
yarn check
or npm run check
TSLint 语法检查,检查Typescript文件是否符合 tslint.json 配置规范 相关详情请阅读 TSLint Rules
yarn tslint
or npm run tslint
自动修复不符合tslint.json规范的代码,遇到git commit
提交报tslint错误时,可以运行此命令修复
.
├── mock/ # 模拟数据服务
│ ├── db.js # 模拟数据DB
│ └── routes.json # 模拟数据API路由配置
│ └── ...
├── public/ # 静态资源文件(包括css, images, fonts, index.html等)
│ └── ...
├── src/
│ ├── components/ # 公用React组件
│ │ └── ...
│ ├── models/ # Dva数据Store层
│ │ └── ...
│ ├── pages/ # 页面模块
│ │ └── ...
│ ├── routes/ # App页面路由配置
│ │ └── ...
│ ├── services/ # API请求服务
│ │ └── ...
│ ├── style/ # 通用CSS样式
│ │ └── ...
│ ├── utils/ # 通用工具模块
│ │ └── ...
│ ├── App.css # App 页面CSS样式
│ ├── App.tsx # App 全局页面
│ ├── App.test.tsx # App 页面Jest测试用例
│ ├── ent.ts # App 环境变量配置
│ ├── index.css # 全局CSS样式
│ ├── index.tsx # React入口文件
│ ├── logo.svg # App logo
│ ├── Page.tsx # 全局页面路由
│ │
├── build/ # 生成环境静态资源文件
├── .gitignore # Git ignore 配置(禁止随意篡改配置!!!)
├── .editorconfig # 编辑器配置(禁止随意篡改配置!!!)
├── config-overrides.js # Webpack 默认配置覆盖操作
├── tsconfig.json # Typescript规则配置(禁止随意篡改规则)
├── tslint.json # tslint规则配置(禁止随意篡改规则)
└── package.json # 构建脚本和依赖配置(禁止随意篡改配置)
└── yarn.lock # Yarn文件
React
Create React App
Typescript
React Router
Redux
Dva
Ant Design
Jest
ECharts
faker.js
React Hot Loader
React Loadable
Webpack
Babel
enzyme
json-server
- 图片资源需放入
public/images/
下, 在组件和CSS中引入图片资源时, 需用create react app 环境变量process.env.PUBLIC_URL
来引入, 避免大量的图片资源在TS中import
-
CSS样式推荐采用的方式来写,Create React App原生支持
- 可以避免全局样式和局部样式的冲突
- JS和CSS可以共享变量,支持局部作用域和全局作用域
- 可以与Sass或Less灵活搭配使用
-
编写CSS样式时需结构清晰, 避免嵌套过深, 特别是在写Sass或Less的时候, 尤其容易层级嵌套过深,层级最好不大于4级, 尽量使用
AntDesign
原生的布局组件和样式. 样式需适当的空行, 例如:.exampleWrapper { background-color: #f2f2f2; .exampleChild1 { color: #666666; } .exampleChild2 { font-size: 16px; } }
-
每一个组件或页面需要有独立的CSS文件, 常用页面或组件样式可以写成全局的CSS样式模块, 对于样式相对较少的组件或页面, 可以以JS对象的形式编写在组件内
-
CSS的类名和ID命名需语义清晰, 避免含糊不清的命名, 类名的英文单词和简写需符合常用英文语法习惯, 禁止自造英文单词和不那么规范的简写形式
-
禁止在css中使用*选择器和
!important
- *选择器因为需要遍历页面的所有元素,所以编译的时候会非常消耗时间
!important
会覆盖所以样式, 破坏CSS样式的权重关系, 导致样式难以维护
更多CSS规范请求阅读 CSS编码规范
CSS Modules 详解及 React 中实践 Sass中文文档
git-flow 是目前流传最广的 Git 分支管理实践。git-flow 围绕的核心概念是版本发布(release)
git-flow 流程中包含 5 类分支,分别是 master、develop、新功能分支(feature)、发布分支(release)和 hotfix
分支类型 | 命名规范 | 创建自 | 合并到 | 说明 |
---|---|---|---|---|
feature | feature/* | develop | develop | 新功能 |
release | release/* | develop | develop 和 master | 新版本发布 |
hotfix | hotfix/* | master 或 release | release 和 master | production 或 release 中bug修复 |
master
是部署到生产环境中的代码, 一般不允许随意合并其他分支到此分支上develop
为开发分支, 是一个进行代码集成的分支, 该分支会及时合并最新代码, 新需求的开发都从此分支上创建feature/my-awesome-feature
为新功能分支, 开发新需求时, 需从develop
分支创建hotfix/fix-bug
为热修复bug分支, 主要是针对release
或master
分支测试出现的bug进行修复release/0.0.1
分支为部署到持续集成服务器上进行测试的分支, 是一个相对稳定的可供测试的分支
- 从
develop
分支创建一个新的feature
分支, 如feature/my-awesome-feature
- 在该
feature
分支上进行开发相关需求,完成后提交代码并 push 到远端仓库 - 当代码完成之后,提
pull request
, 代码审核通过后合并到develop
分支, 之后可删除当前feature
分支
- 从
develop
分支创建一个新的release
分支,如release/0.0.1
- 把
release
分支部署到持续集成服务器上, 并交给相关测试人员进行测试 - 对于测试中发现的问题,直接在
release
分支上创建hotfix/fix-bug
分支, 进行相关的bug修复 - 合并
hotfix/fix-bug
分支到release
分支, 再次部署并交给测试人员进行测试
Commit message 和 Change log 编写指南
Jest 测试框架官方网站Jest
想获取更多信息,可以访问Create React App documentation.
想学习更多React内容,可访问React官方网站 React documentation.