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 相关文章推荐
关于二级域名下使用一级域名下的COOKIE的问题
Nov 07 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 Javascript
jQuery filter函数使用方法
May 19 Javascript
c#+jquery实现获取radio和checkbox的值
Sep 12 Javascript
jQuery的load()方法及其回调函数用法实例
Mar 25 Javascript
jquery实现简单的轮换出现效果实例
Jul 23 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 Javascript
基于JavaScript实现前端文件的断点续传
Oct 17 Javascript
微信小程序 基础组件与导航组件详细介绍
Feb 21 Javascript
vue+springmvc导出excel数据的实现代码
Jun 27 Javascript
微信小程序实现循环动画效果
Jul 16 Javascript
vue中的ref和$refs的使用
Nov 22 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仿ZOL分页类代码
2008/10/02 PHP
PHP MSSQL 存储过程的方法
2008/12/24 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
Javascript - HTML的request类
2007/01/09 Javascript
Javascript Global对象
2009/08/13 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
详解python中的json和字典dict
2018/06/22 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
Python tkinter常用操作代码实例
2020/01/03 Python
Python必须了解的35个关键词
2020/07/16 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
日本小田急百货官网:Odakyu
2018/07/19 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
心理健康课教学反思
2014/02/13 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
初婚初育证明范本
2015/06/18 职场文书
文明礼仪主题班会
2015/08/13 职场文书
MySQL优化之慢日志查询
2022/06/10 MySQL
mysql sock文件存储了什么信息
2022/07/15 MySQL