All Projects → zhangkun-Jser → React Starter

zhangkun-Jser / React Starter

React快速搭建项目的脚手架,持续更新中...

Programming Languages

javascript
184084 projects - #8 most used programming language

Labels

react-starter

PC 端 react+redux 的脚手架,持续进行更新迭代。

特点

  1. 当中集成了当前react生态的几个主流技术栈:
  • react 16.12.0
  • ant design 3.26.2
  • react-router 5.1.2
  • redux 4.0.4
  • redux-thunk 2.2.0
  • webpack 4.41.2
  1. 符合目前前后端分离项目的开发、部署、测试、上线各环节及操作的要求。
  2. 优化了传统redux-thunk中action、reducer书写上的不便。
  3. 根据路由地址,懒加载所需模块,就是说目前脚手架中提供的示例代码无需删除,只需要确保路由无效即可
  4. 增加错误边界,捕捉嵌套组件在生命过程中发生的错误
  5. 封装 axios(src/common/request.js),对失败的请求进行了统一处理,使用方法:
import { get, post, put, del } from 'common/request';
post(URL, params).then(res => {});

// 如果需要自行处理请求失败的情况,也可以直接引入 axios 实例
import axios from 'common/request';
axios.post(URL, params)
  .then(res => {})
  .catch(error => {})

文件目录

注意:带 ✎ 号的表示示例配置,可以根据自己的项目配置自行替换;带 +/- 号的表示示例组件,可保留修改或删除

├─asset                     // ========================= 静态资源目录
│  ├─css
|  |  ├─app.less            // ========================= 样式文件入口
|  |  ├─base.less           // ========================= 基础样式
|  |  ├─icon.less           // ========================= iconfont 样式(✎)
|  |  ├─reset.less          // ========================= 样式重置文件
|  |  ├─variables.less      // ========================= 变量文件(✎)
|  |  └─vendor_antd.less    // ========================= 专门用于覆盖 antd 样式(✎)
│  ├─font                   // ========================= iconfont文件,在icon.less文件中引用
|  |  ├─iconfont.eot(+/-)
|  |  ├─iconfont.svg(+/-)
|  |  ├─iconfont.ttf(+/-)
|  |  └─iconfont.woff(+/-)
│  └─img                    // ========================= 图片资源存放目录
│
├─build                     //  ========================= webpack 相关配置目录
│   ├─postcss.config.js     //  ========================= postcss 相关配置
│   ├─publicPath.js         //  ========================= 发布路径(✎)
│   ├─theme.js              //  ========================= antd 主题配置(✎)
│   ├─webpack.base.conf.js  //  ========================= webpack 公用项配置
│   ├─webpack.dev.conf.js   //  ========================= webpack 开发/联调环境项配置
│   └─webpack.prod.conf.js  //  ========================= webpack 生产/测试环境项配置
│
├─mock                      //  ========================= mock 文件目录
│  ├─config
│  ├─data
│  └─template
│
├─src                       //  ========================= js 源码目录
│   ├─common                //  ========================= 公共模块目录
│   │  └─request.js         //  ========================= 对axios进行封装
│   │ 
│   ├─components            //  ========================= 纯组件目录
│   │  ├─Layout             //  ========================= 布局相关组件目录
│   │  │  ├─Footer.jsx(+/-)
│   │  │  ├─Header.jsx(+/-)
│   │  │  └─Sider.jsx(+/-)
│   │  ├─Pages(+/-)        //  ========================= 分页组件
│   │  ├─ErrorBoundary.jsx  //  ========================= 错误边界组件
│   │  └─index.js(+/-)
│   │ 
│   ├─constants
│   │  ├─constant.js        //  ========================= 常量集中管理目录(✎)
│   │  └─url.js             //  ========================= url集中管理目录(✎)
│   │ 
│   ├─redux                 //  ========================= redux 处理目录
│   │  ├─skuunit(+/-)
│   │  ├─configureStore.js  //  ========================= store/中间件配置
│   │  └─reducers.js        //  ========================= 所有reducer入口(✎)
│   │ 
│   ├─routers               //  ========================= 按路由划分的业务模块目录
│   │  ├─Skuunit(+/-)
│   │  ├─index.jsx(✎)
│   │  └─PrimaryLayout.jsx(+/-)
│   │ 
│   └─app.jsx               //  ========================= 项目入口
│
├─.babelrc                  //  ========================= babel配置文件
├─.eslintignore
├─.eslintrc.js              //  ========================= eslint规则文件
├─.gitignore
├─index.html
├─package-lock.json
├─package.json
├─README.md(✎)
├─template.html(✎)         //  ========================= html嵌入模板
└─webpack.config.js         //  ========================= webpack配置入口

Changelog

  • 2019.07.15

    • [x] src目录支持使用less
    • [x] 兼容IE11
  • 2019.06.11

    • [x] 更改UI
  • 2019.06.03

    • [x] 升级babel 7
    • [x] 更新示例组件
    • [x] 修复eslint报错
    • [x] 完善README.md
  • 2019.05.22

    • [x] 完成基础版本,给出规范目录结构,满足打包构建路由懒加载数据管理错误处理一条龙服务。

babel7依赖说明

基础依赖:

  • @babel/cli: 为babel的脚手架工具
  • @babel/core: babel-core是作为babel的核心存在,babel的核心api都在这个模块里面,比如:transform,用于字符串转码得到AST
  • @babel/plugin-proposal-class-properties: 解析class类的属性
  • @babel/plugin-proposal-decorators: 解析装饰器模式语法,如使用react-redux的@connect
  • @babel/plugin-proposal-export-default-from: 解析export xxx from 'xxx'语法
  • @babel/plugin-transform-runtime: 防止转换后的代码重复
  • @babel/preset-env : 官方解释“用于编写下一代JavaScript的编译器”,编译成浏览器认识的JavaScript标准
  • @babel/preset-react: 用于编译react的jsx,开发react应用必备
  • babel-loader: 就是用于编译JavaScript代码
  • babel-plugin-import: 用于进行按需加载

代码优化相关依赖:

参考文章

朋友们如果有一些对本项目得建议,或者想法欢迎去 github 提 issues,我将持续改进优化该项目

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].