react18基础教程系列--安装环境及packagejson文件分析

简介: react18基础教程系列--安装环境及packagejson文件分析

一个React项目中,默认会安装:

react:React框架的核心
react-dom:React 视图渲染的核心「基于React构建WebApp(HTML页面)J—>react-native:构建和渲染App的
react-scripts: 脚手架为了让项目目录看起来干净一些,把webpack打包的规则及相关的插件/LOADER等都隐藏到了node_modules目录下,react-scripts就是脚手架中自己对打包命令的一种封装,基于它打包,会调用node_modules中的webpack等进行处理!!
web-vitals: 性能检测工具
{
"name": "r18app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start", // 开发环境
"build": "react-scripts build", //生产环境
"test": "react-scripts test", // 测试环境
"eject": "react-scripts eject" // 这个可以弹出隐藏的webapck配置文件,但是要小心,过程是不可逆的
},
"eslintConfig": { // eslint语法检测相关配置
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": { // 基于browserlist规范,设置浏览器的兼容情况
"production": [
">0.2%", // 使用率超0.2%的浏览器
"not dead", // 不考虑ie
"not op_mini all" // 不考虑欧朋浏览器
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
1
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
33
34
35
36
37
38
环境变量配置
如果需要自定义环境变量,必须加上前缀 REACTAPP,否则不会生效。

"scripts": {
"start": "cross-env PORT=8888 REACT_APP_MODE=DEV API_URL=http://www.baidu.com react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
1
2
3
4
5
6

可以看到REACT_APP_MODE有值,API_URL没有写入到本地环境变量中。

加上这个REACTAPP就可以在项目中获取到了

代理服务的实现
在src目录下面添加setupProxy.js文件,注意版本的问题,这里有坑,会导致页面不显示,低版本的处理方法可以去搜下别的教程,高版本 `“http-proxy-middleware”: "^3.0.2"使用方法如下:

const { createProxyMiddleware } = require("http-proxy-middleware"); //引入http-proxy-middleware,react脚手架已经安装
module.exports = function (app) {
app.use(
"/api",
createProxyMiddleware({
//遇见/api1前缀的请求,就会触发该代理配置
target: "http://localhost:3001", //请求转发给谁
changeOrigin: true, //控制服务器收到的请求头中Host的值
pathRewrite: { "^/api": "" }, //重写请求路径,下面有示例解释
})
);
};
1
2
3
4
5
6
7
8
9
10
11
12
function App() {
useEffect(() => {
console.log(process.env);
// 请求接口
fetch("/api/v1/users")
.then((res) => res.json())
.then((res) => console.log(res));
}, []);
return (


Hello World


当前的环境是:{process.env.NODE_ENV}


当前的环境是:{process.env.REACT_APP_API_URL}



);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
相关文章
|
20天前
|
前端开发 JavaScript CDN
React 教程
10月更文挑战第6天
37 3
|
4月前
|
前端开发 JavaScript 开发者
react18【系列实用教程】组件 (2024最新版 | 含父子组件传值、兄弟组件传值、越层组件传值、“插槽“)
react18【系列实用教程】组件 (2024最新版 | 含父子组件传值、兄弟组件传值、越层组件传值、“插槽“)
59 2
|
4月前
|
前端开发 JavaScript 数据格式
react18【系列实用教程】Hooks (useState,useReducer,useRef,useEffect,useContext,useMemo,useCallback,自定义 Hook )
react18【系列实用教程】Hooks (useState,useReducer,useRef,useEffect,useContext,useMemo,useCallback,自定义 Hook )
86 1
|
4月前
|
JavaScript 前端开发
react18【系列实用教程】双向绑定表单 (2024最新版)含受控组件、非受控组件、单行多行输入框 input,下拉选择 select,单选 radio,多选 checkbox,标签 label
react18【系列实用教程】双向绑定表单 (2024最新版)含受控组件、非受控组件、单行多行输入框 input,下拉选择 select,单选 radio,多选 checkbox,标签 label
143 1
|
4月前
|
JavaScript 前端开发
react18【系列实用教程】JSX (2024最新版)
react18【系列实用教程】JSX (2024最新版)
59 1
|
4月前
|
前端开发
react18【系列实用教程】Hooks 闭包陷阱 (2024最新版)含useState 闭包陷阱,useEffect 闭包陷阱,useCallback 闭包陷阱
react18【系列实用教程】Hooks 闭包陷阱 (2024最新版)含useState 闭包陷阱,useEffect 闭包陷阱,useCallback 闭包陷阱
63 0
|
4月前
|
JavaScript
react18【系列实用教程】useRef —— 创建 ref 对象,获取 DOM (2024最新版)
react18【系列实用教程】useRef —— 创建 ref 对象,获取 DOM (2024最新版)
52 0
|
4月前
|
缓存 前端开发
react18【系列实用教程】memo —— 缓存组件 (2024最新版)
react18【系列实用教程】memo —— 缓存组件 (2024最新版)
103 0
|
4月前
|
缓存
react18【系列实用教程】useCallback —— 缓存函数 (2024最新版)
react18【系列实用教程】useCallback —— 缓存函数 (2024最新版)
45 0
|
4月前
|
缓存
react18【系列实用教程】useMemo —— 缓存数据 (2024最新版)
react18【系列实用教程】useMemo —— 缓存数据 (2024最新版)
87 0