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 相关文章推荐
基于JQuery的Pager分页器实现代码
Jul 17 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
Jul 31 Javascript
JavaScript内存管理介绍
Mar 13 Javascript
javascript递归回溯法解八皇后问题
Apr 22 Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
Jul 13 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
Aug 12 Javascript
Vue组件创建和传值的方法
Aug 17 Javascript
a标签调用js的方法总结
Sep 05 Javascript
小程序实现密码输入框
Nov 16 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
77A一级收信机修理记
2021/03/02 无线电
PHP与SQL注入攻击[一]
2007/04/17 PHP
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
JavaScript 继承详解(四)
2009/07/13 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
javascript实现的登陆遮罩效果汇总
2015/11/09 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
Python中encode()方法的使用简介
2015/05/18 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
使用python3实现操作串口详解
2019/01/01 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
加工操作管理制度
2014/01/19 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
银行求职自荐信范文
2015/03/04 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python