资讯专栏INFORMATION COLUMN

Vue多环境代理配置

hss01248 / 2376人阅读

摘要:多环境代理配置背景多人协作模式下,修改代理比较麻烦,而且很容易某个开发人员会修改了文件后提交了。在中配置代理这么配置可以满足需求,但是会有多人改动的情况,造成以上说的错误。

Vue多环境代理配置

背景: 多人协作模式下,修改代理比较麻烦,而且很容易某个开发人员会修改了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":"/"
              }
          }
        }
    }
}

这样就可以根据不同的环境配置不同的地址了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104884.html

相关文章

  • vue配置文件实现代理v2版本

    摘要:实现不同服务器代理接上篇,虽然可实现多版本代理,但是每增加一种模式就需要重下新修改以及,感觉很不智能,扩展性挺差。使用时只需更改文件即可,即使增加了代理也可只增加配置文件完成代理。 vue实现不同服务器代理 接上篇,虽然可实现多版本代理,但是每增加一种模式就需要重下新修改vue.config.js以及.env.dev.local,感觉很不智能,扩展性挺差。主要实现思路: 模仿vue中....

    CoXie 评论0 收藏0
  • vue环境配置方案

    摘要:前端项目上线的时候不可避免的会考虑到不同的运行环境需要前端请求不同服务地址的问题方案一一般的情况下可以使用环境变量进行分环境打包开发环境继续使用代理需要编译的环境通过设置环境变量去控制打包过程最终生成适用于不同环境的前端资源有关环境 前端项目上线的时候 , 不可避免的会考虑到不同的运行环境需要前端请求不同服务地址的问题 方案一 : 一般的情况下 , 可以使用vue-cli-servi...

    zhouzhou 评论0 收藏0
  • VUE使用中踩过的坑

    摘要:前言如今可谓是一匹黑马数已居第一位前端开发对于的使用已经越来越多,它的优点就不做介绍了本篇是我对使用过程中以及对一些社区朋友提问我的问题中做的一些总结帮助大家踩坑。随后的重新渲染,元素组件及其所有的子节点将被视为静态内容并跳过。 前言 vue如今可谓是一匹黑马,github star数已居第一位!前端开发对于vue的使用已经越来越多,它的优点就不做介绍了,本篇是我对vue使用过程中以及...

    big_cat 评论0 收藏0
  • Vue 兼容 ie9 的全面解决方案

    摘要:本文将针对使用生态开发完成的网站,以版本为基础兼容目标,实现全功能正常使用的全面兼容解决方案。这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。此外,使用这个,一旦页面不处于浏览器的当前标签,就会自动停止刷新。 前言 背景情况 vue - 2.5.11 vue-cli 使用模板 webpack-simple http请求:axios Vue 官方对于 ie 浏览器版本兼容情...

    codeKK 评论0 收藏0
  • vue-cli 3.x配置跨域代理

    摘要:需求上是我们只需要在开发环境配置跨域代理,所以我们可以在开发环境的配置上加上能够代理上的环境变量即可。修改的配置将改为这里依然是采用的来做的代理配置,一些自定义配置可以移步到官网去进行参考。 写在前面 vue-cli 3.x 的beta版本已经发布了一段时间,很早就像体验一番一直找不到时间。这些日子刚好有空就想着依照网上的一些例子练下手,刚一上手就踩到坑了。3.x 版本对整个项目的构建...

    weakish 评论0 收藏0

发表评论

0条评论

hss01248

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<