React 脚手架选择
刚进公司时,我们前端组新建,两个人。领导让我们自定框架,同事一直在用 React ,我们就从 github 上选择了 antdpro 作为我们的前端基础脚手架。 选择它的原因一是阿里出品,阿里作为中国前端界的少林泰斗,技术水平顶尖,而且该框架也在其内部使用良久,经得住各种考验;二是中文文档齐全, 对于我这种英文渣渣来说,母语太亲切了。
后来,鉴于其太重,决定选择新脚手架替换之,我又负责提供候选脚手架。选择范围当然是 github 了。其它标准如下:
- 非服务端渲染
- 非 GraphQL
- 非 Umi
- 各 master 分支最后提交时间不晚于 2018-12-31
基于以上标准,并主要按 Star 降序排列之后,有以下脚手架入选,先一一点评两句。
脚手架 | create-react-app | react-boilerplate | react-slingshot | react-pxq |
---|---|---|---|---|
网址 | create-react-app | react-boilerplate | react-slingshot | react-pxq |
语言 | js、ts | js | js | js |
路由 | x | √ | √ | √ |
状态管理 | x | √ | √ | √ |
样式 | css | css | scss、css | less、css |
国际化 | x | √ | x | x |
代码检查 | √ | √ | √ | √ |
测试 | √ | √ | √ | √ |
Data API | Web API | Web API | Web API | Web API |
工具 | webpack | webpack | webpack | webpack |
热部署 | √ | √ | √ | √ |
Star | 77.5k | 25k | 9.6k | 6.7k |
Fork | 18.6k | 5.2k | 1.7k | 2.1k |
时间 | 2020-04-07 | 2019-04-19 | 2020-03-30 | 2019-06-26 |
自由度 | 高 | 高 | 高 | 高 |
脚手架 | react-admin | react | airframe-react | arc |
---|---|---|---|---|
网址 | react-admin | react | airframe-react | arc |
语言 | ts | js | js | js |
路由 | √ | √ | √ | √ |
状态管理 | √ | √ | x | x |
样式 | scss、css | less、css | scss、css | css |
国际化 | x | x | x | x |
代码检查 | √ | √ | √ | √ |
测试 | √ | √ | x | √ |
Data API | Web API | Web API | Web API | Web API |
工具 | webpack | webpack | webpack | webpack |
热部署 | √ | √ | x | √ |
Star | 4.8k | 3.5k | 2.7k | 2.5k |
Fork | 1.4k | 1.3k | 307 | 257 |
时间 | 2020-04-09 | 2020-01-16 | 2020-03-30 | 2019-08-30 |
自由度 | 高 | 高 | 较高 | 高 |
脚手架 | react-webpack-babel | dva-boot-admin |
---|---|---|
网址 | react-webpack-babel | dva-boot-admin |
语言 | js | js |
路由 | √ | √ |
状态管理 | x | √ |
样式 | scss、css | less、css |
国际化 | x | x |
代码检查 | √ | √ |
测试 | √ | √ |
Data API | Web API | Web API |
工具 | webpack | webpack |
热部署 | √ | √ |
Star | 1.2k | 1.2k |
Fork | 433 | 346 |
时间 | 2020-01-26 | 2020-03-24 |
自由度 | 高 | 较高 |
create-react-app,facebook 官方出品,极简到极致,啥都没有了。没有路由、没有状态管理,没有配置文件,纯 React ,真是一点不能再干净了。适合学习,如果有很强的webpack配置能力,可在其基础上自定义;
react-boilerplate,集成了路由、状态管理(redux-saga)、国际化等功能,全套服务,可用于生产环境;
react-slingshot,集成了路由、状态管理,但状态管理使用 redux-thunk,据说没有 redux-saga 好用;
react-pxq,基本上就是 create-react-app + 作者的自定义,集成了路由、状态管理(redux-thunk)等常用功能;
react-admin,create-react-app的ts版本 + 作者的自定义,集成了路由、状态管理(redux-thunk)等,自定义页面较多;
react,作者手工打造,集成路由、状态管理(redux-thunk)等;
airframe-react,使用了一套bootstrap的ui,没有状态管理,类似于bootstrap的仪表盘管理演示,不适合我;
arc,感觉就是一个create-react-app的示例加强版本,封装没有create-react-app好,更新也比不了,选它不如直接选择 create-react-app;
react-webpack-babel,这真是一个入门配置,没有状态管理,不如create-react-app;
dva-boot-admin,从名字上可以看出来,状态管理是dva(封装了redux-saga),作者又在上封装了一层(估计类似于umi了),整体给我感觉就是create-react-app + dva(umi),感觉可以快等于antdpro了。
综合来看,大部分脚手架都借鉴 create-react-app ,在其上做了自定义,但状态管理又没有使用redux-saga的强大。如果让我选择,我会直接选择react-boilerplate这款。虽然它更新还停留在去年4月份,但 dev 分支一直在保持更新。
以上为一家之言,欢迎交流。