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 相关文章推荐
onbeforeunload与onunload事件异同点总结
Jun 24 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
Dec 31 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
Mar 18 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
js每隔两秒输出数组中的一项(实例)
May 28 Javascript
详解微信小程序的不同函数调用的几种方法
May 08 Javascript
Element ui 下拉多选时新增一个选择所有的选项
Aug 21 Javascript
JS实现使用POST方式发送请求
Aug 30 Javascript
Vue简单实现原理详解
May 07 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
Nov 06 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中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
Yii清理缓存的方法
2016/01/06 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
Python二分法搜索算法实例分析
2015/05/11 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
python写一个随机点名软件的实例
2019/11/28 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
预备党员承诺书
2014/03/25 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
五分钟演讲稿
2014/04/30 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
督导岗位职责
2015/02/04 职场文书
护士个人总结范文
2015/02/13 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
win10更新失败无限重启解决方法
2022/04/19 数码科技
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android