vue实践——根据不同环境,自动转换请求的url地址操作

  

一般的项目环境分为:本地环境,测试环境,预发环境,正式环境。这些环境的域名一般是一样的,前端请求接口的url也会随着这些环境的变化而改变,手动修改有点麻烦,所以想个办法,让请求的地址根据域名改变而改变。

  

<强>第一步:

  

建立一个RequestConfig。js作为配置文件,内容如下:

        const APIMapping={   project1: {   测试:“http://123.com”,   本地:“http://abc.com”   },   project2: {   测试:“http://123.com”,   本地:“http://abc.com”   }   }   const currentEnvMapping={   “127.0.0.1”:“测试”,   “localhost”:“地方”,   }   出口{currentEnvMapping, APIMapping}      

这里只列举了测试环境,和本地环境,其他环境使用方法一样。

  

APIMapping是所有的项目,这里有project1, project2;每个项目分为本地环境(测试),测试环境(当地);

  

currentEnvMapping指明什么域名下使用本地环境的域名,还是测试环境的域名。

  

<强>第二步

  

使用vuex,建立一个商店文件存放vuex,然后再建立index.js存放数据:

        从“Vue”进口Vue   从“Vuex”进口Vuex   进口{APIMapping currentEnvMapping},从“/. ./共同/RequestConfig.js。”      Vue.use (Vuex)   const状态={//这里currentEnvMapping[位置。主机名)确定是测试,还是当地的环境//APIMapping [' project1 ']确定了是哪个项目//APIMapping [' project1 '] [currentEnvMapping] [location.hostname]最终确定了url      RequestHost: APIMapping [' project1 '] [currentEnvMapping [location.hostname]]   }      const getter={   get_RequestHost:状态=比;{   返回state.RequestHost   }   }      出口默认新Vuex.Store ({   状态,   getter   })   之前      

<强>第三步

  

就可以使用了,跟正常的vue一样,代码如下:

        安装(){   console.log(这一点。store.getters.get_RequestHost美元)   }      

具体的代码看这里:https://github.com/YalongYan/vue-practice/tree/master/dynamic-request

  

<强> vue-cli项目生产环境和开发环境请求接口配置,不用手动切换,自动切换地址的问题

  

1,在dev.env.js文件中添加配置(开发环境):

        使用严格的   常量合并=要求(“webpack-merge”)   const prodEnv=要求(“。/prod.env”)      模块。出口=合并(prodEnv, {   NODE_ENV:“发展”,   url_api:““api”//添加的请求接口,键值都可以自定义,   })      之前      

2,在prod.env.js文件中添加配置(生产环境):

        使用严格的   模块。出口={   NODE_ENV:“生产”,   url_api:‘“http://192.168.0.30/server-carApp/薄?/添加的键值对,键开发和生成环境要保持一致,值是打包后上线的地址   }      

3,在axios请求文件中,通过process.env.url_api就可以拿到请求的根接口,

  

我的请求文件中的设置:

        const服务=axios.create ({   baseURL: process.env。url_api,//通过process.env.url_api拿到请求的地址   withCredentials:没错,   超时:60 * 1000   })      

我之所以在开发环境中配置url_api的值为api,是因为我在config/index.js中配置的跨域代理写的是api,

  

配置下的index.js文件中关于跨域代理的配置

        模块。出口={   戴夫:{//路径   assetsSubDirectory:“静态”,   assetsPublicPath: '/',   proxyTable: {   “/api”: {   目标:' http://192.168.0.30/server-carApp/',//后台接口   changeOrigin:真的,//是否开启跨域//安全:假的,//如果是https接口,需要配置这个   pathRewrite: {   “^/api”:“   }   }   },   。。。。。。   之前      

4,同样的,在具体的.vue组件文件中,也可以通过process.env.url_api拿到根api接口地址,然后可以用字符串拼接,得到想要的完整的网址请求地址。

  

例如,在login.vue文件中,有一个图片验证码的地址,

        & lt; template>   & lt; img src=" https://www.yisu.com/zixun/codeImgSrc " alt="图片验证码”/比;   & lt;/template>   & lt; script>//这样根路径就被引入进来了,不用在打包上线的时候在具体的文件中改资源路径   const imgUlr=process.env。url_api + '/主/验证/qrCode& # 63; w=300和h=80”   出口默认{   名称:“登录”,   数据(){   返回{   codeImgSrc: imgUlr,   }   }   }   & lt;/script>   

vue实践——根据不同环境,自动转换请求的url地址操作