Vue项目打包后request.js中动态加载baseURL

1,365 阅读1分钟

1、背景

为了适用Vue项目上云过程中多环境配置分离的需要,达到一处打包多处部署的效果,拟采用打包后动态加载baseURL的方式进行多环境的配置分离,云上环境使用动态挂载从configMap的方式对被引用文件进行替换。

2、操作步骤

1)public/js文件夹下新建 remote.js

# remote.js
const url= `/dev-api` // 配置服务器地址

Screenshot from 2021-10-13 23-15-38.png

2) index.html中引入remote.js

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= webpackConfig.name %></title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
    
    <!-- 引入下列代码 -->
    <script src="./js/remote.js"></script>
  </body>
</html>

3)配置request.js中baseURL为baseUrl

1 设置baseURL为 baseURL

const service = axios.create({
  // eslint-disable-next-line no-undef
  baseURL: baseURL, 
  withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
})

4) 配置configmap挂载到云上static路径

分别撰写针对dev、test、preprod、prod等不同环境的configmap,云上部署时根据环境不同挂载不同的configmap替换原remote.js文件

5)参考文档

1、VUE axios 后台请求地址可动态修改

2、编译打包后动态配置api请求baseurl

3、Vue项目多环境打包命令配置

4、Vue项目打包后动态获取自定义变量