React 官方文档:https://reactjs.org/
以下是亲自动手实践的,第一次自己搭建 React 项目,写得不好的地方,有待改进
# 系统要求
Node>= 14.0.0npm>= 5.6
# 创建项目
Create React App 官方文档:https://create-react-app.dev/
执行以下命令即可自动创建项目
npx create-react-app 项目名称
注意: npx 不是拼写错误 —— 它是 npm 5.2+ 附带的 package 运行工具
# 默认目录结构
├── README.md
├── node_modules
├── package.json
├── package-lock.json
├── .gitignore
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
└── src
├── App.css
├── App.js
├── App.test.js
├── index.css
├── index.js
├── logo.svg
├── serviceWorker.js
└── setupTests.js
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 命令
npm start或者yarn satrt:启动项目,打开http://localhost:3000 即可访问npm test或者yarn test:测试项目npm run build或者yarn build:打包项目
# 添加 craco
create-creact-app 项目,如果需要手动修改配置,需先 npm run eject 弹出配置,但这个过程是不可逆的,所以推荐使用第三方工具去修改。第三方工具有:craco 或者 react-app-rewired ,都可以重写 react 脚手架配置,具体选择 craco 还是 react-app-rewired,根据需求即可。
我在这儿使用的是 craco。
安装
craconpm install @craco/craco -D # 或 yarn add @craco/craco -D1
2
3修改
package.json,将react-scripts改为craco{ "scripts": { "start": "craco start", "build": "craco build", "test": "craco test", "eject": "react-scripts eject" } }1
2
3
4
5
6
7
8在项目根目录新建
craco.config.js,用于修改默认配置/* craco.config.js */ const path = require('path'); module.exports = { webpack: { // 添加别名 alias: { '@': path.resolve(__dirname, 'src'), } }, devServer: { // 设置端口 port: 3100, open: true, hot: true, } };1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18重新启动,则可看见端口已经从
3000变成了3100,并且支持别名在项目根目录新建
webpack.config.js,用于输出 webpack 的配置(非必须)注意:使用 WebStorm 时,无法识别
craco.config.js中的webpack配置(例如:别名)时,需添加webpack.config.js配置文件,再在 WebStorm 中配置: File -> Settings -> Languages & Frameworks -> JavaScript -> Webpack 选择此webpack.config.js文件并应用即可。/* webpack.config.js */ const { createWebpackDevConfig } = require("@craco/craco"); const cracoConfig = require("./craco.config.js"); const webpackConfig = createWebpackDevConfig(cracoConfig); module.exports = webpackConfig;1
2
3
4
5
6
7
8
# 添加 craco-less
若需使用 Less 安装此依赖即可
- 安装
craco-lessnpm install craco-less -D # 或 yarn add craco-less -D1
2
3 - 修改
craco.config.js/* craco.config.js */ const CracoLessPlugin = require('craco-less'); module.exports = { // ... plugins: [ { // 配置 less 插件 plugin: CracoLessPlugin, options: { lessLoaderOptions: { lessOptions: { // 修改 And Design 变量 modifyVars: {}, javascriptEnabled: true, } } } } ] };1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 - 重新启动便可支持
less
# 添加 antd
引入 Ant Design 组件库,官方文档:https://ant.design/
- 安装依赖
npm install antd -S # 或 yarn add antd1
2
3 - 修改
src/App.js引入 antd 的按钮组件import React from 'react'; import { Button } from 'antd'; import './App.css'; const App = () => ( <div className="App"> <Button type="primary">Button</Button> </div> ); export default App;1
2
3
4
5
6
7
8
9
10
11 - 修改
src/App.css,在文件顶部引入antd/dist/antd.css@import '~antd/dist/antd.css';1 - 完成之后,即可在页面中看见 antd 的蓝色按钮组件
# 定制主题配置
方法一:在
craco.config.js修改变量,使用modifyVars来进行主题配置,例子如下:const CracoLessPlugin = require('craco-less'); module.exports = { plugins: [ { plugin: CracoLessPlugin, options: { lessLoaderOptions: { lessOptions: { modifyVars: { '@primary-color': '#1DA57A' }, javascriptEnabled: true, }, }, }, }, ], };1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17方法二:配置 less 变量文件,新建一个单独的
var.less变量文件,引入这个文件来覆盖antd.less里的变量把
App.css改为App.less,并在顶部加入以下代码@import '~antd/lib/style/themes/default.less'; @import '~antd/dist/antd.less'; // 引入官方提供的 less 样式入口文件 @import 'var.less'; // 用于覆盖上面定义的变量1
2
3注意:这种方式已经载入了所有组件的样式,不需要也无法和按需加载插件 babel-plugin-import 的 style 属性一起使用
# 修改项目结构
├── README.md
├── node_modules
├── craco.config.js # webpack 配置
├── package.json
├── package-lock.json
├── .gitignore
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
└── src
├── assets # 静态资源
│ ├── fonts # 字体
│ ├── images # 图片
│ └── styles # 样式
├── components # 组件
├── routes # 路由
├── store # 状态管理
├── utils # 工具包
├── views # 页面
│
├── App.less
├── App.js
├── App.test.js
├── index.less
├── index.js
├── logo.svg
├── serviceWorker.js
└── setupTests.js
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 添加路由 react-router-dom
React Router Dom 官方文档:https://reactrouter.com/docs/en/v6/api
安装 react-router-dom 或者 react-router 皆可,react-router 包含了 react-router-dom 和 react-router-native
- 安装 react-router-dom 版本 v6.x
npm install react-router-dom -S
# 或
yarn add react-router-dom
2
3