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


Posted in Javascript onSeptember 21, 2020

一般的项目环境分为:本地环境,测试环境,预发环境,正式环境。 这些环境的域名一般是一样的, 前端请求接口的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-cli项目生产环境和开发环境请求接口配置,不用手动切换,自动切换地址的问题

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

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
 NODE_ENV: '"development"',
 url_api: '"api"' // 添加的请求接口,键值都可以自定义,
})

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

'use strict'
module.exports = {
 NODE_ENV: '"production"',
 url_api: '"http://192.168.0.30/server-carApp/"' // 添加的键值对,键开发和生成环境要保持一致,值是打包后上线的地址
}

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

我的请求文件中的设置:

const service = axios.create({
 baseURL: process.env.url_api, // 通过process.env.url_api拿到请求的地址
 withCredentials: true,
 timeout: 60 * 1000 
})

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

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

module.exports = {
 dev: {

 // Paths
 assetsSubDirectory: 'static',
 assetsPublicPath: '/',
 proxyTable: {
  '/api': {
  target: 'http://192.168.0.30/server-carApp/', // 后台接口
  changeOrigin: true, // 是否开启跨域
  // secure: false, // 如果是https接口,需要配置这个
  pathRewrite: {
   '^/api': ''
  }
  }
 },
 。。。。。。

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

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

<template>
<img :src="codeImgSrc" alt="图片验证码"/>
</template>
<script>
// 这样根路径就被引入进来了,不用在打包上线的时候在具体的文件中改资源路径
const imgUlr = process.env.url_api + '/main/validate/qrCode?w=300&h=80'
export default {
name: 'Login',
 data() {
 return {
 codeImgSrc: imgUlr,
 }
 }
}
</script>

以上这篇vue实践---根据不同环境,自动转换请求的url地址操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
nullJavascript中创建对象的五种方法实例
May 07 Javascript
js 判断图片是否加载完以及实现图片的预下载
Aug 14 Javascript
jquery Validation表单验证使用详解
Sep 12 Javascript
javascript中checkbox使用方法实例演示
Nov 19 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
Feb 07 Javascript
Vue2 监听属性改变watch的实例代码
Aug 27 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
Jul 06 Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 Javascript
JS实现打字游戏
Dec 17 Javascript
javascript使用Blob对象实现的下载文件操作示例
Apr 18 Javascript
Vue实现todo应用的示例
Feb 20 Vue.js
vue实践---vue不依赖外部资源实现简单多语操作
Sep 21 #Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
Sep 21 #Javascript
微信小程序实现翻牌抽奖动画
Sep 21 #Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
Sep 21 #Javascript
微信小程序实现转盘抽奖
Sep 21 #Javascript
结合axios对项目中的api请求进行封装操作
Sep 21 #Javascript
微信小程序实现打卡签到页面
Sep 21 #Javascript
You might like
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
js实现图片拖动改变顺序附图
2014/05/13 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Django框架下在视图中使用模版的方法
2015/07/16 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
python字符串,数值计算
2016/10/05 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
python绘制地震散点图
2019/06/18 Python
wxPython实现带颜色的进度条
2019/11/19 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
基于python实现操作git过程代码解析
2020/07/27 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
毕业生怎样写好自荐信
2013/11/11 职场文书
房地产融资计划书
2014/01/10 职场文书
安全生产大检查方案
2014/05/07 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
2016七夕情人节感言
2015/12/09 职场文书
mysql 子查询的使用
2022/04/28 MySQL