vue实践---根据不同环境,⾃动转换请求的url地址操作
⼀般的项⽬环境分为:本地环境,测试环境,预发环境,正式环境。这些环境的域名⼀般是⼀样的,前端请求接⼝的url也会随着这些环境的变化⽽改变,⼿动修改有点⿇烦,所以想个办法,让请求的地址根据域名改变⽽改变。
第⼀步:
建⽴⼀个RequestConfig.js 作为配置⽂件,内容如下:
const APIMapping = {
project1: {
test: '123',
local: 'abc'
},
project2: {
test: '123',
local: 'abc'
}
}
const currentEnvMapping = {
'127.0.0.1': 'test',
'localhost': 'local',
}
export { currentEnvMapping, APIMapping }
这⾥只列举了测试环境,和本地环境,其他环境使⽤⽅法⼀样。
APIMapping是所有的项⽬,这⾥有 project1,project2 ;每个项⽬分为本地环境(test),测试环境(local);
currentEnvMapping 指明什么域名下使⽤本地环境的域名,还是测试环境的域名。
第⼆步
使⽤vuex, 建⽴⼀个store⽂件存放vuex, 然后再建⽴index.js存放数据:
import Vue from 'vue'
import Vuex from 'vuex'
import { APIMapping, currentEnvMapping } from './../common/RequestConfig.js'
Vue.use(Vuex)
const state = {
// 这⾥currentEnvMapping[location.hostname]确定是test,还是local环境
// APIMapping['project1']确定了是哪个项⽬
// APIMapping['project1'][currentEnvMapping][location.hostname]最终确定了url
RequestHost: APIMapping['project1'][currentEnvMapping[location.hostname]]
}
const getters = {
get_RequestHost: state => {
return state.RequestHost
}
}
export default new Vuex.Store({
state,
getters
})
第三步
就可以使⽤了,跟正常的vue⼀样,代码如下:
mounted(){
console.log(this.$_RequestHost)
}
补充知识:vue-cli项⽬⽣产环境和开发环境请求接⼝配置,不⽤⼿动切换,⾃动切换地址的问题
1、在v.js⽂件中添加配置(开发环境):
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./v')
NODE_ENV: '"development"',
url_api: '"api"' // 添加的请求接⼝,键值都可以⾃定义,
})
2、在v.js⽂件中添加配置(⽣产环境):
'use strict'
NODE_ENV: '"production"',
url_api: '"192.168.0.30/server-carApp/"' // 添加的键值对,键开发和⽣成环境要保持⼀致,值是打包后上线的地址
}
3、在axios请求⽂件中,通过v.url_api就可以拿到请求的根接⼝,
我的请求⽂件中的设置:
const service = ate({
baseURL: v.url_api, // 通过v.url_api拿到请求的地址
withCredentials: true,
timeout: 60 * 1000
})
我之所以在开发环境中配置url_api的值为api,是因为我在config/index.js中配置的跨域代理写的是api,
config下的index.js⽂件中关于跨域代理的配置
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/api': {
target: '192.168.0.30/server-carApp/', // 后台接⼝
changeOrigin: true, // 是否开启跨域
// secure: false, // 如果是https接⼝,需要配置这个
pathRewrite: {
'^/api': ''
}
}
},
。
百度api接口。。。。。
4、同样的,在具体的.vue组件⽂件中,也可以通过v.url_api拿到根api接⼝地址,然后可以⽤字符串拼接,得到想要的完整url请求地址。
例如,在login.vue⽂件中,有⼀个图⽚验证码的地址,
<template>
<img :src="codeImgSrc" alt="图⽚验证码"/>
</template>
<script>
// 这样根路径就被引⼊进来了,不⽤在打包上线的时候在具体的⽂件中改资源路径
const imgUlr = v.url_api + '/main/validate/qrCode?w=300&h=80'
export default {
name: 'Login',
data() {
return {
codeImgSrc: imgUlr,
}
}
}
</script>
以上这篇vue实践---根据不同环境,⾃动转换请求的url地址操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论