一个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"]}
}
环境变量配置
如果需要自定义环境变量,必须加上前缀 REACT_APP_
,否则不会生效。
"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"},
可以看到REACT_APP_MODE
有值,API_URL
没有写入到本地环境变量中。
加上这个REACT_APP_
就可以在项目中获取到了
代理服务的实现
- 在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": "" }, //重写请求路径,下面有示例解释}));
};
function App() {useEffect(() => {console.log(process.env);// 请求接口fetch("/api/v1/users").then((res) => res.json()).then((res) => console.log(res));}, []);return (<div className="App"><h1>Hello World</h1><p>当前的环境是:{process.env.NODE_ENV}</p><p>当前的环境是:{process.env.REACT_APP_API_URL}</p></div>);
}
这样就完成了,开发环境下的后端服务接口的联调配置。
参考文献
http-proxy-middleware最新使用教程