前言
- 创建
react
项目不用像创建Vue
项目那么麻烦,我们直接创建运行命令即可;
- 我目前也是React刚起步,可能有些创建项目的方式还没接触到,等接触到了再补充上;
一、创建项目
1.1 webpack
- 脚手架:
create-react-app
是一个 创建 React 开发环境的工具,底层由Webpack构建,封装了配置细节,开箱即用;
1.2 vite
- viet:
- 可以实现
cra
同等能力,相比于 webpack
打包速度更快;
1.3 启动项目eslint报提示处理
- 当我们床创建一个新项目跑起来之后,页面上会展示一个关于
eslint
的提示;
- 处理:
- 目标文件:
package.json
:
- 删除该部分的代码即可;
- 删除之后记得重启项目;
二、项目完善
2.1 清除无用文件
- 第一次创建的项目,在
src
下有很多文件,对目前的我们来说,有用的只有App.js、index.js
,其他的文件都可以删除;
- 删除其他文件之后,项目就会报错,按照报错信息,清除无效引用;
- 清除无用文件及无效代码之后,就只剩
App.js、index.js
这两个文件;
App.js
:
function App() {
return <div className="App">this is App</div>;
}
export default App;
index.js
:
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
2.2 按照业务规范整理项目目录
- 项目的整体目录架构,还是要根据公司来设置;
- 以下目录只做参考哈;
文件夹 | 作用 |
---|
apis | 接口函数 |
assets | 静态资源(图片、样式) |
components | 通用组件 |
pages | 页面级组件 |
router | 路由Router |
store | Redux状态 |
utils | 工具函数 |
2.3 创建 router 及 store
三、依赖介绍
react:该包是核心,提供创建元素、组件等功能;
react-dom:提供DOM相关功能等;
四、配置路径 别名 及 联想
4.1 使用 cra 创建的项目
cra
将所有工程化配置都隐藏在react-scripts
包中,所以项目中看不到任何配置信息;
- 如果要修改
cra
的默认配置,有两种方案:
- ✅ 通过第三方库修改;
- ❌ 通过
yarn eject
命令(这种方式不用管,项目中用不到);
- 该命令会释放
react-scripts
中的所有配置到项目中,该过程不可逆;
- 准备工作:
- 下载依赖:
pnpm install -D @craco/craco
;
4.1.1 路径别名
- 路径别名:
- 在项目中,通过
@
来表示 src
目录的 绝对路径;
- 在项目根目录下新建
craco.config.js / ts
文件:
const path = require('path');
module.exports = {
webpack: {
alias: {
'@': path.resolve(__dirname, 'src/'),
'@comp': path.resolve(__dirname, 'src', 'components')
}
}
};
- 配置好路径别名之后,需要将项目启动和打包的脚本修改为
craco
的方式:
{
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "craco eject"
}
}
4.1.2 路径联想
- 路径联想:
- 在项目中当我们输入
@/
的时候,会自动提示 src
下的文件出来;
4.1.2.1 TS项目
- 在
tsconfig.json
中添加配置;
{
...,
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
"@comp/*": ["src/components/*"],
},
...,
}
- 若
craco.config.ts
报关于const
的错(eslint);
- 我们需要在项目根目录下新建
.eslintrc
文件:
{
"parserOptions": {
"ecmaVersion": 2015
}
}
4.1.2.2 JS项目
4.2 使用vite创建的项目
4.2.1 路径别名
- 目标文件:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { resolve } from 'path'
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': resolve(__dirname, './src'),
'@comp': resolve(__dirname, './src', 'components')
}
}
})
4.2.2 路径联想
- 若使用的是
ts
,就需要在 tsconfig.json
中去配置:
- 注意:
- 观察这两个path,在这两个文件中去配置(随便一个就行);
