zoukankan      html  css  js  c++  java
  • 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 中添加

    资源搜索网站大全 https://www.renrenfan.com.cn 广州VI设计公司https://www.houdianzi.com

    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':'/'
                  }
              }
            }
        }
    }

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

  • 相关阅读:
    U盘PE系统下安装WIN2003和WINXP的方法(非GHOST版)
    自己做U盘急救杀毒
    Windows Server 2003 SP2 企业版 ISO 下载 629M
    解决开机关机慢问题
    一般处理程序
    [转]iframe自适应高度详解(希望对大家有用)非常经典,非同凡响
    ie6下position fixed的失效bug
    php文件上传MAX_FILE_SIZE不起作用的问题
    IE6测试网页显示空白页面
    自己写的面向过程php验证码
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/14132649.html
Copyright © 2011-2022 走看看