Vue域名配置及代理

背景:对于vue的调试时,大家都知道vscode会在本地开一个服务,请求首先到本地服务,由本地服务请求远程服务器得到结果后再返回给页面使用,页面为什么不直接请求远程就不讨论了,因为涉及跨域安全等等,这里说一下个人理解工程里的配置。

首先是工程目录中有.env,.env.buildDevApp,.env.buildApp,.env.devApp等配置,可能你的和我名字不太样,但都是打包某个环境或运行时需要的配置文件,理论上这几个文件里定的变量名都一样的,就是值不样。

//.env
URL=""
//.env.buildDevApp 测试
URL="https://dev.abc.com"
//.env.buildApp 正式
URL="https://abc.com"
//.env.devApp 运行时
URL="/api"

以上是环境配置文件(不同环境打包或运行时):
1、当你在打包或运行时,会用你选的不同环境对应不同文件里URL的值,覆盖掉.env的URL的值,其他变量同理。

2、不同环境是在后面package.json里定义体现。

// vite.config.js 代理配置
const proxy = {
   '/api': {
     // target: 'https://abc.com',
     target: 'https://dev.abc.com',
     changeOrigin: true,
     rewrite: path => path.replace(/^\/api/, '')
   },
}

以上是运行时代理配置关键代码
1、代码中proxy下的"/api"和要和.env.devApp运行时配置文件的URL="/api"要对应上。
2、如果运行时想切换正式和测试,直接修改代码里target的值,给正式或测试即可。

// request.js
const server = axios.create({
    baseURL: import.meta.env.URL, //这里就是引用.env文件里URL的值
    timeout: 30000
})

如果有不同的域名,就在各env配置文件里定义多个URL1、URL2,也需要创建多个reqeust1.js,request2.js,不同的request文件引用import.meta.env.URL1、import.meta.env.URL2,在定义api.js的时候导入不同的request即可。

// package.json
"scripts": {
  "dev:app": "vite serve --mode=devApp",
  "build:dev": "vite build --mode=buildDevApp",
  "build:release": "vite build --mode=buildApp",
},

由于天天写业务代码,也没时间去看文档资料,以前都很蒙,各种修改尝试,现在思路相对来说清晰一点。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容