vuejs根据环境自动更换打包地址
项目需求
- 本地测试,测试服务器,线上服务器,用vuejs在不同平台上运行时都需要单独打包。那么如何实现一次打包在多个平台运行呢;
- http与https访问时容易出现跨域问题,根据环境判断协议是否正确;
原理
- 获取当前访问域名,根据域名判断是否包含在服务器地址变量中,如果有则使用该服务器地址,否则使用默认配置地址。
解决方案
//1.定义所有环境服务器地址
const server={
pro:"https://app.cps.com.cn/api/",//生产环境
dev:"http://dev.app.cps.com.cn/api/",//测试环境
other:"http://dev.cps.cn/api/"//其他环境
}
//2.获取当前访问域名,并根据域名判断当前环境,然后获取指定环境的服务器地址
var GLOBAL_DOMIN=""; //[全局]服务端接口访问
var GLOBAL_PROTOCOL=""; //[全局]当前服务接口使用的协议,以供访问其他公共域名时使用
const origin=location.hostname; //当前访问域名
const protocol=location.protocol; //当前域名使用的协议
for(var i in server){
let item=server[i];
if(item.indexOf(origin)>-1){
// 域名匹配到了
GLOBAL_DOMIN = item;
GLOBAL_PROTOCOL = item.substring(0, item.indexOf(":")+1);
// 配置中的协议与当前访问的协议不一致,跳转到配置中的协议
if(GLOBAL_PROTOCOL != protocol){
window.location.href = GLOBAL_PROTOCOL + location.href.substring(protocol.length);
}
break;
}
}
//3. 特殊情况处理,如果没有在server变量中匹配到具体环境,则依次读取util、dev
if(!GLOBAL_DOMIN) GLOBAL_DOMIN=server.pro?server.pro:server.dev;
if(!GLOBAL_PROTOCOL) GLOBAL_PROTOCOL=protocol;
// 测试
console.log("GLOBAL_DOMIN",GLOBAL_DOMIN);
console.log("GLOBAL_PROTOCOL",GLOBAL_PROTOCOL);
export default
{
DOMIN
}
最后更新于 2021-10-18 14:44:51 并被添加「」标签,已有 677 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭