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 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
使用jquery获取网页中图片高度的两种方法
Sep 26 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
理解JavaScript中worker事件api
Dec 25 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
Apr 28 Javascript
jQuery validate 验证radio实例
Mar 01 Javascript
关于vuex的学习实践笔记
Apr 05 Javascript
Vue 幸运大转盘实现思路详解
May 06 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
Sep 10 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
May 29 jQuery
JavaScript前端开发时数值运算的小技巧
Jul 28 Javascript
vue打包时去掉所有的console.log
Apr 10 Vue.js
微信小程序实现卡片层叠滑动效果
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编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
videocapture库制作python视频高速传输程序
2013/12/23 Python
python实现给数组按片赋值的方法
2015/07/28 Python
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
python binascii 进制转换实例
2019/06/12 Python
python中round函数保留两位小数的方法
2020/12/04 Python
python 批量将中文名转换为拼音
2021/02/07 Python
超市开业庆典策划方案
2014/05/14 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
护理实习生带教计划
2015/01/16 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
Nginx进程调度问题详解
2021/09/25 Servers