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 相关文章推荐
js脚本学习 比较实用的基础
Sep 07 Javascript
Jquery优化效率 提升性能解决方案
Sep 06 Javascript
jquery异步跨域访问代码
Jun 28 Javascript
jQuery中change事件用法实例
Dec 26 Javascript
浅谈Cookie的生命周期问题
Aug 02 Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 Javascript
js select实现省市区联动选择
Apr 17 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
easyui messager alert 三秒后自动关闭提示的实例
Nov 07 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
May 17 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
Mar 06 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
Jul 28 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
各种战术和打法的原创者
2020/03/04 星际争霸
Chrome Web App开发小结
2014/09/04 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
介绍Python中内置的itertools模块
2015/04/29 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
使用python实现滑动验证码功能
2019/08/05 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
教师实习自我鉴定
2013/12/11 职场文书
创意婚礼策划方案
2014/05/18 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
关于颐和园的导游词
2015/01/30 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL