# Bicycle-Manage-System
**Repository Path**: chen243/Bicycle-Manage-System
## Basic Information
- **Project Name**: Bicycle-Manage-System
- **Description**: 基于React + AntDesign的后台管理系统
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2022-05-31
- **Last Updated**: 2022-05-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Bicycle-Manage-System
#### 项目介绍
基于 React 全家桶 + AntDesign 的后台管理系统
#### 软件架构
1. IDE: VSCode
#### 安装教程
#### 脚手架安装步骤
1. `npm install -g create-react-app` 安装脚手架
2. `create-react-app myProject` 创建项目文件夹
3. `cd myProject` 进入项目文件夹
4. `npm start` 启动项目
#### Yarn 使用
0. `npm install -g yarn` 安装 yarn
1. `yarn init` 初始化
1. `yarn add [package]` 添加依赖的包
1. `yarn remove [package]` 移除依赖的包
1. `yarn/yarn install` 安装项目全部的依赖
> 如果要使用 yarn 在项目中安装包的话,就在创建脚手架前先全局安装 yarn,这样在安装脚手架的时候就可以出现 yarn 的配置项,也就是可以使用 yarn 进行安装依赖包
#### 项目工程搭建
#### 安装所需的插件
1. 安装`react-router`和`axios`
2. 安装`AntD`
3. 暴露`webpack`配置文件
4. 安装`less-loader`
5. 修改`less-loader`
```js
yarn add react-router-dom axios less-loader antd
```
#### 显示隐藏的文件,方便修改配置信息
1. 运行命令:`yarn eject`
> 在运行此命令之前要确保项目没有修改的地方,否则会报错,错误提示如下图所示:

> 正常信息提示如下图所示:

#### 使用 antd
> antd 主题是根据 less 开发的
1. 方法 1(不推荐)
```js
import React, { Component } from "react";
import Button from "antd";
import "antd/dist/antd.css";
import "./App.css";
class App extends Component {
render() {
return (
);
}
}
export default App;
```
2. 使用`babel-plugin-import`插件,按需加载 css
- 安装`yarn add babel-plugin-import`
- 在`webpack.config.prod.js`和`webpack.config.dev.js`文件中修改如下
```js
{
test: /\.(js|jsx|mjs)$/,
include: paths.appSrc,
loader: require.resolve('babel-loader'),
options: {
// 添加antd库,支持更换主题样式
plugins: [
['import', [{
libraryName : 'antd',
style: true
}]]
],
compact: true,
},
},
```
#### 修改配置文件,支持 less 文件
> 以上安装之后可能会报错,说 less 模块没有安装
1. 安装 less: `yarn add less`, 但是如果安装成功之后还报错的话就降级安装:`yarn add less@^2.7.3`,因为从 2.7.3 到最新版本的 3.0.2 发生了很大的变化。
2. 修改配置文件(webpack.config.prod.js 和 webpack.config.dev.js)
```js
// 添加一个匹配less文件的loader
{
test: /\.less$/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
},
},
{
loader: require.resolve('postcss-loader'),
options: {
// Necessary for external CSS imports to work
// https://github.com/facebookincubator/create-react-app/issues/2677
ident: 'postcss',
plugins: () => [
require('postcss-flexbugs-fixes'),
autoprefixer({
browsers: [
'>1%',
'last 4 versions',
'Firefox ESR',
'not ie < 9', // React doesn't support IE8 anyway
],
flexbox: 'no-2009',
}),
],
},
},
{
loader:require.resolve('less-loader'),
options: {
modules: false,
// 修改antd的主题
modifyVars: {
"@primary-color": "#f9c700"
}
}
}
],
},
```
#### 配置不同的环境变量
> 在项目中可以定义内置变量(`NODE_ENV`, `PUBLIC_URL`),以及以 `REACT_APP_`开头的任何环境变量
##### 第一种方式配置(使用第三方插件)
> cross-env 能跨平台的设置及使用环境变量,大多数情况下,在 window 平台下使用类似于:NODE_ENV=production 的命令会卡住,windows 平台与 POSIX 在使用命令行时有许多区别(例如在 POSIX,使用\$ENV_VAR,在 windows,使用%ENV_VAR%。。。)
1. 安装: `npm i --save-dev cross-env`
2. 在 npm 脚本(多是 package.json)里这么配置
```js
{
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
}
}
```
3. 运行:`npm run build`这样 NODE_ENV 便设置成功,无需担心跨平台问题
4. 这样运行之后就可以得到`process.env.NODE_ENV`的值是`production`
#### .env.local 文件的使用说明
> .env.local 中的内容可以修改 wenpack 配置中的值,通过例如 process.env.PORT 使用(其中 PORT 是你再.env.local 中定义的变量名字)
#### React Router 4.0
##### 安装
`npm install react-router-dom`
`yarn add react-router-dom`
##### 核心用法
1. HashRouter 和 BrowserRouter
> 只能有一个根节点
2. Route 中的 path、exact、component、render
3. NavLink 和 Link
4. Switch
##### react-router 跳转路由传参
1. 首先指定一个带参数的路由页面
```js
import { HashRouter as Router, Route, Switch } from "react-router-dom";
class App extends React.Component {
render() {
return (
);
}
}
```
2. Link 组件实现跳转
```js
import { Link } from "react-router-dom";
用户;
```
3. histroy 实现跳转
```js
this.props.history.push(`/user/${item.name}`);
```
4. 获取传值
```js
componentDidMount(){
let name = this.props.match.params.name;
if(name){
// TODO
}
}
```
### Redux
- 单向数据流:从父组件流向子组件,兄弟组件无法共享数据
- State: React 中的状态,是只读对象,不可直接修改
- Reducer:基本函数,用于对 State 的业务处理
- Action: 普通对象,用于描述事件行为,改变 State
#### Redux 使用安装的插件
```js
yarn add redux --save
yarn add react-redux --save
```
#### Redux 集成
- 创建 Action 模块
- 创建 Reducer 模块
- 创建 Store 模块
- 通过 connect 方法将 React 组件和 Redux 连接起来
- 添加 Provider 作为项目的根组件,用于数据的存储
#### Redux 调试工具的安装
1. 在 chrome 中安装`Redux Devtools`
2. `yarn add redux-devtools-extension`