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

第一步:

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

const APIMapping = {
project1: {
test: 'http://123.com',
local: 'http://abc.com'
},
project2: {
test: 'http://123.com',
local: 'http://abc.com'
}
}
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.$store.getters.get_RequestHost)
}

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

vue实践系列请看这里:https://github.com/YalongYan/vue-practice

最新文章

  1. PHP文件操作系统----主要的文件操作函数
  2. Android IOS WebRTC 音视频开发总结(六六)-- 三个角度分析美女视频直播这个行业
  3. 【微网站开发】之微信内置浏览器API使用
  4. cdoj 04 Complete Building the Houses 暴力
  5. Struts2中的类型转换
  6. Java Socket简例
  7. How and Why Unsafe is Used in Java---reference
  8. 如何在ASP.NET MVC 中获取当前URL、controller、action
  9. Maven测试篇
  10. IOC容器在web容器中初始化——(一)两种配置方式
  11. repr调试python程序
  12. Windows 上安装 Azure PowerShell及Azure PowerShell部署虚拟机
  13. AX_ClassTemplate
  14. Python学习(十二) —— 面向对象
  15. CDH下集成spark2.2.0与kafka(四十一):在spark+kafka流处理程序中抛出错误java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/Collection;)V
  16. sql日期操作
  17. 680. Valid Palindrome II
  18. 什么时候block 是放在全局区里面的?
  19. 微服务深入浅出(1)-- SpringBoot
  20. Android中TextView设置最大长度,超出显示省略号

热门文章

  1. Lazy Scheduler:我的轻量级任务调度框架
  2. 【转】MySQL5.5的my.cnf 参数详解
  3. Matlab梯度下降及正规方程实现多变量的线性回归
  4. 小程序 座位管理系统(二)(nodejs+mongodb+小程序)
  5. ios开发 Socket通信
  6. C# HttpWebRequest 绝技 【转】
  7. ES6中的Map集合(与java里类似)
  8. IOS 开发环境,证书和授权文件是什么?
  9. Assets 读取assets中的文件
  10. nodeJs-autoMerge