Vue多环境代理配置方法思路详解


Posted in Javascript onJune 21, 2019

背景:

多人协作模式下,修改代理比较麻烦,而且很容易某个开发人员会修改了vue.config.js文件后提交了。

第一,很容易引起冲突。

第二,很容易出现代理错误,需要排查。而且现在微服务盛行,在生产环境下有网关配置,不会出错,但是在本地调试会造成麻烦,如修改了代理地址需要同步修改代理中的地址,很麻烦也很容易出错。

解决思路:

1.开发中定义常量js文件,例如constants.js。用户存放各个服务需要代理的服务名。

let api = ""
  let loginServer = "/loginServer"
  let businessServer = "/businessServe"
  if(process.env.NODE_ENV == "development"){
    api = "/api"
    loginServer = api + LoginServer
    businessServer = api + businessServer
  }
  export {
    loginServer,
    businessServer
  }

其中api为代理规则中配置,loginServer为服务名,可根据业务需要替换在实际的业务中就可以这么用

import {loginServer} from 'constants'
 function login(params){
  return axios.post(loginServer+"/login",params)
 }

其中 loginServer为服务名,login为方法名,params为参数。

在vue.config.js中配置代理

modules.exports = {
  publicPath:"/" ,
  devServer: {
    port: 8080,
    proxy:{
     '/api/loginServer':{
       target:"http://localhost:8080",
       ws:true,
       changeOrigin:true,
       pathRewrite:{
         '^/api':'/'
       }
     },
      '/api/businessServer':{
       target:"http://localhost:8081",
       ws:true,
       changeOrigin:true,
       pathRewrite:{
         '^/api':'/'
       }
     }
    }
  }
}

这么配置可以满足需求,但是会有多人改动vue.config.js的情况,造成以上说的错误。

解决方案:

vue中提供了 --mode 模式,并提供了 .env.local 等文件,此文件被git忽略,且可根据当前 mode设置的值寻找环境变量配置,例如 --mode=dev ,则.env.dev.local 或.env.dev 等文件中的配置会生效,.local文件会被git忽略,因此咱们用这个,--mode设置在 package.json中,在npm run serve 中添加

script:{
"serve":"vue-cli-service serve --mode=dev"
}

在项目根目录下jianli .env.dev.local文件,文件中添加 以下键值对(此文件中只接受键值对

.env.dev.local

loginServerURL =http://localhost:8080
businessServerURL = http://localhost:8081

当然可根据不同的模式建立不同的local文件

.env.prod.local等

vue.config.js中改写

modules.exports = {
  publicPath:"/" ,
  devServer: {
    port: 8080,
    proxy:{
     '/api/loginServer':{
       target:process.env.loginServerURL?process.env.loginServerURL:"httpL//localhost:8080",
       ws:true,
       changeOrigin:true,
       pathRewrite:{
         '^/api':'/'
       }
     },
      '/api/businessServer':{
       target:process.env.loginServerURL?process.env.businessServerURL :"http://localhost:8081",
       ws:true,
       changeOrigin:true,
       pathRewrite:{
         '^/api':'/'
       }
     }
    }
  }
}

这样就可以根据不同的环境配置不同的地址了。

总结

以上所述是小编给大家介绍的Vue多环境代理配置方法思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Javascript 个人笔记(没有整理,很乱)
Jul 07 Javascript
Vue.js学习教程之列表渲染详解
May 17 Javascript
BootStrap daterangepicker 双日历控件
Jun 02 Javascript
AngularJS中filter的使用实例详解
Aug 25 Javascript
微信小程序progress组件使用详解
Jan 31 Javascript
jQuery基于Ajax实现读取XML数据功能示例
May 31 jQuery
又拍云 Node.js 实现文件上传、删除功能
Oct 28 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
Mar 28 Javascript
微信小程序转发事件实现解析
Oct 22 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
Dec 04 Javascript
微信小程序缓存支持二次开发封装实现解析
Dec 16 Javascript
vue总线机制(bus)知识点详解
May 10 Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 #Javascript
使用express来代理服务的方法
Jun 21 #Javascript
react+redux仿微信聊天界面
Jun 21 #Javascript
基于jQuery的时间戳与日期间的转化
Jun 21 #jQuery
jQuery事件委托代码实践详解
Jun 21 #jQuery
Vue.js中的extend绑定节点并显示的方法
Jun 20 #Javascript
微信小程序动态显示项目倒计时
Jun 20 #Javascript
You might like
隐性调用php程序的方法
2015/06/13 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
收集的10个免费的jQuery相册
2011/02/26 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
js编写选项卡效果
2017/05/23 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
Promise.all中对于reject的处理方法
2018/08/01 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
python statsmodel的使用
2020/12/21 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
应用数学自荐书范文
2013/11/24 职场文书
理工科学生的自我评价
2013/12/15 职场文书
岗位聘任书范文
2014/03/29 职场文书
团队队名口号大全
2014/06/06 职场文书
教师节标语大全
2014/10/07 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
立春观后感
2015/06/18 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS