vue3笔记(12)目录 & 文件拆分 & 代码位置记录
项目有时候有部分代码可以复用,有时候需要整体修改(eg: API暴露),这篇记录一下实践中的感受。
也有一些实践中发现代码书写位置的问题,都记录在这篇里面。
请求axios统一
utils/request.ts
中封装axios,在api/***.ts
中调用。
若所有接口来自同一台服务器
在.env.***
中设置VUE_APP_BASE_API
1
2
3NODE_ENV = 'server'
VUE_APP_BASE_API = "http://***"
VUE_APP_INTERFACE_URL = "http://***"utils/request.ts
中配置VUE_APP_BASE_API
1
2
3
4
5
6
7
8
9
10import axios, { AxiosRequestConfig, AxiosResponse } from "axios";
axios.defaults.timeout = 50000;
axios.defaults.headers = {
"Content-Type": "application/json;charset=utf8",
};
axios.defaults.baseURL = process.env.VUE_APP_BASE_API
? process.env.VUE_APP_BASE_API
: "";
// getData, postData, putData, delData 封装若接口来自不同服务器,或者不同环境使用不同服务器,不使用base url。
根据不同服务器接口分别在api/***.ts
中编写host。1
2
3const host = process.env.VUE_APP_MOCK
? "http://0.0.0.0:8080"
: process.env.VUE_APP_INTERFACE_URL;
接口暴露
本项目生产环境中,由于接口地址是变化的,前端硬逻辑修改麻烦,所以暴露一个static/config.js
文件,后端可以通过修改这个文件来给定当前接口地址。
static/config.js
1
2
3window.g = {
apiUrl: "http://***"
}在
index.html
中引入,<script src="./static/config.js"></script>
api/***.ts
中根据环境获取1
2
3
4const host =
process.env.VUE_APP_PRO == "true"
? window.g.apiUrl
: process.env.VUE_APP_INTERFACE_URL;package.json
中配置生产环境命令1
2
3"scripts": {
"prod": "vue-cli-service build --mode prod"
}编写
.env.prod
1
2NODE_ENV = 'prod'
VUE_APP_PRO = 'true'运行
npm run prod
时,打包所有文件到dist,./static/*
下文件将直接移动到dist目录下,后期修改apiUrl
,也将直接改变请求地址。App.vue
是所有页面的入口,若项目中有和 token 有关的请求,不能放在App.vue
中,可以放在layout/app-main.vue
中。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!