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 相关文章推荐
在textarea中屏蔽js的某个function的javascript代码
Apr 20 Javascript
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
Jan 03 Javascript
js获取某元素的class里面的css属性值代码
Jan 16 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
Nov 23 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
Sep 14 Javascript
jQuery简单实现遍历单选框的方法
Mar 06 Javascript
ES6使用export和import实现模块化的方法
Sep 10 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
May 17 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
Sep 03 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
Sep 16 Javascript
BootStrap前端框架使用方法详解
Feb 26 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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
外贸学院会计专业应届生求职信
2013/11/14 职场文书
清洁工表扬信
2014/01/08 职场文书
八一慰问活动方案
2014/02/07 职场文书
团干部培训方案
2014/06/03 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
先进事迹材料范文
2014/12/29 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
Python中的 Set 与 dict
2022/03/13 Python
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang