基于React、Mobx、Webpack 和 React-Router的项目模板。 #88

简介: 基于React、Mobx、Webpack 和 React-Router的项目模板。 #88

前言


自己利用业余时间,基于React、Ant、Webpack、Mobx、React-Router写了一个后台管理模板,接下来会出三部曲系列,分为前端、后端、运维到发布,从零搭建React后台管理模板,目前已在公司内部搭建了几套项目,并都已上线,希望这个系列,帮助自己梳理各技术最新知识点,同时也希望对看到的人有所帮助。


项目效果:


登录页:

404页:

列表页:


GitHub源码地址


Tristana


在线预览地址


Tristana


技术栈


  • React
  • Ant
  • React-Router
  • Mobx
  • Webpack
  • ES6
  • Babel
  • Axios
  • Eslint
  • Stylelint

项目结构


│  .babelrc                     // babelrc配置
│  .eslintrc.json               // eslint配置
│  .gitignore                   // git忽略配置
│  package.json                 // 依赖包配置
│  README.md                    // 项目说明
│  stylelint.config.js          // stylelint配置
├─dist                          // 打包输出目录
├─public                        // 项目公开目录
│      index.html
├─script                        // webpack配置
│      webpack.base.conf.js     // webpack通用配置
│      webpack.dev.js           // webpack开发环境配置
│      webpack.prod.js          // webpack生产环境配置
└─src                           // src入口目录
    │  config.js                // 基础配置文件
    │  index.jsx                // 项目入口文件
    │  request.jsx              // 接口请求配置
    │  routeConfig.jsx          // 路由配置
    ├─assets                    // 静态资源
    │  └─images
    │          sign_bg.jpg
    ├─components                // 公用组件
    │  ├─LayoutHeader
    │  │      index.jsx
    │  │      index.less
    │  │      
    │  ├─PrivateRoute
    │  │      index.jsx
    │  │      
    │  └─Socket
    │          index.jsx
    ├─mobx                      // mobx配置
    │  │  basicStore.js
    │  │  rootStore.js
    │  │  
    │  ├─AddGoods
    │  │      store.js
    │  │      
    │  ├─CounterStore
    │  │      store.js
    │  │      
    │  └─Dashboard
    │          store.js
    ├─pages                      // 页面组件
    │  ├─AddGoods
    │  │      index.jsx
    │  │      index.less
    │  │      
    │  ├─Counter
    │  │      index.jsx
    │  │      index.less
    │  │      
    │  ├─Dashboard
    │  │      index.jsx
    │  │      index.less
    │  │      
    │  ├─Home
    │  │  │  index.jsx
    │  │  │  index.less
    │  │  │  
    │  │  └─components
    │  │          menu.jsx
    │  │          
    │  └─User
    │          error.jsx
    │          error.less
    │          login.jsx
    │          login.less
    ├─servers                     // 接口配置
    │      dashboard.js
    ├─styles                      // 公共样式
    │      index.less
    └─utils                       // 工具库
            index.js


各大库版本


"dependencies": {
    "@babel/cli": "^7.8.0",
    "@babel/core": "^7.8.0",
    "@babel/plugin-proposal-class-properties": "^7.8.0",
    "@babel/plugin-proposal-decorators": "^7.8.0",
    "@babel/plugin-proposal-json-strings": "^7.8.0",
    "@babel/plugin-syntax-dynamic-import": "^7.8.0",
    "@babel/plugin-syntax-import-meta": "^7.8.0",
    "@babel/plugin-transform-runtime": "^7.8.0",
    "@babel/polyfill": "^7.8.0",
    "@babel/preset-env": "^7.8.2",
    "@babel/preset-react": "^7.8.0",
    "@babel/preset-stage-2": "^7.8.0",
    "antd": "^4.0.0",
    "axios": "^0.19.2",
    "babel-eslint": "^10.0.3",
    "babel-loader": "^8.0.0",
    "babel-plugin-import": "^1.13.0",
    "babel-plugin-react-css-modules": "^5.2.6",
    "classnames": "^2.2.6",
    "clean-webpack-plugin": "^3.0.0",
    "compression-webpack-plugin": "^3.0.1",
    "core-js": "^3.6.4",
    "cross-env": "^6.0.3",
    "css-loader": "^3.2.0",
    "dayjs": "^1.8.15",
    "eslint": "^6.8.0",
    "eslint-config-standard": "^14.1.0",
    "eslint-loader": "^3.0.3",
    "eslint-plugin-import": "^2.20.0",
    "eslint-plugin-jsx-a11y": "^6.2.3",
    "eslint-plugin-node": "^11.0.0",
    "eslint-plugin-promise": "^4.2.1",
    "eslint-plugin-react": "^7.17.0",
    "eslint-plugin-standard": "^4.0.1",
    "file-loader": "^5.0.2",
    "history": "^4.7.2",
    "html-webpack-plugin": "^3.2.0",
    "install": "^0.12.2",
    "is-promise": "^2.1.0",
    "less": "^3.8.1",
    "less-loader": "^5.0.0",
    "lint-staged": "^10.0.8",
    "mini-css-extract-plugin": "^0.8.0",
    "mobx": "^5.13.1",
    "mobx-react": "^6.1.4",
    "npm": "^6.10.2",
    "optimize-css-assets-webpack-plugin": "^5.0.1",
    "postcss-loader": "^3.0.0",
    "pre-commit": "^1.2.2",
    "progress-bar-webpack-plugin": "^1.12.1",
    "prop-types": "^15.7.2",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-router": "^5.1.2",
    "react-router-dom": "^5.1.2",
    "react-scripts": "^3.0.0",
    "speed-measure-webpack-plugin": "^1.3.1",
    "stylelint": "^13.0.0",
    "stylelint-config-standard": "^19.0.0",
    "terser-webpack-plugin": "^2.2.1",
    "webpack": "^4.41.2",
    "webpack-bundle-analyzer": "^3.6.0",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.10.1"
  },
目录
相关文章
|
10天前
|
前端开发 JavaScript
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
本文介绍了在React项目中实现路由懒加载的方法,使用React提供的`lazy`和`Suspense`来优化项目首次加载的速度。通过将路由组件改为懒加载的方式,可以显著减少初始包的大小,从而加快首次加载速度。文章还展示了如何使用`Suspense`组件包裹`Switch`来实现懒加载过程中的fallback效果,并提供了使用前后的加载时间对比,说明了懒加载对性能的提升作用。
31 2
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
|
10天前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
52 1
|
10天前
|
移动开发 前端开发
react项目配合diff实现文件对比差异功能
在React项目中,可以使用`diff`库实现文件内容对比差异功能。首先安装`diff`库,然后在组件中引入并使用`Diff.diffChars`或`Diff.diffLines`方法比较文本差异。通过循环遍历`diff`结果,可以生成不同样式的HTML元素来高亮显示文本差异。
24 1
react项目配合diff实现文件对比差异功能
|
10天前
|
前端开发 算法 JavaScript
React项目input输入框输入自动失去焦点
本文讨论了在React项目中如何处理input输入框自动失去焦点的问题,特别是在移动端开发中。文章提供了一个使用React Native的TouchableWithoutFeedback组件来监听点击事件,并在事件处理函数中通过调用Keyboard.dismiss()方法使输入框失去焦点的示例代码。这种方法可以确保在用户点击页面其他区域时,键盘能够收起,输入框失去焦点。
27 1
React项目input输入框输入自动失去焦点
|
10天前
|
JavaScript 前端开发 应用服务中间件
本地运行打包好的React、Vue项目
本文讨论了如何本地运行打包好的React和Vue项目,并解决了使用React-Router时Tomcat部署刷新页面导致404的问题,提出了将请求转回index.html的解决方案。
13 1
本地运行打包好的React、Vue项目
|
11天前
|
资源调度 JavaScript 前端开发
使用vite+react+ts+Ant Design开发后台管理项目(二)
使用vite+react+ts+Ant Design开发后台管理项目(二)
|
2月前
|
JSON 前端开发 JavaScript
使用vite搭建一个React项目!真香!
【8月更文挑战第13天】使用vite搭建一个React项目!真香!
124 3
使用vite搭建一个React项目!真香!
|
2月前
webpack——通过webpack-bundle-analyzer分析项目包占比情况
webpack——通过webpack-bundle-analyzer分析项目包占比情况
29 2
webpack——通过webpack-bundle-analyzer分析项目包占比情况
|
9天前
|
缓存 前端开发 JavaScript
在react项目中实现按钮权限createContext && useContext
文章介绍了在React项目中如何使用`createContext`和`useContext`来实现按钮级别的权限控制。
13 0
|
2月前
|
缓存 JSON JavaScript
简单介绍下从零搭建 Webpack 项目
本文详细介绍了Webpack中Loader的概念及其重要性。Webpack仅支持处理JS和JSON文件,而Loader能够帮助处理其他类型的文件,如CSS、图片等,并将其转换为有效的模块。文章首先解释了Loader的基本原理,接着介绍了几种常见Loader的配置和使用方法
19 1

热门文章

最新文章

下一篇
无影云桌面