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 相关文章推荐
JavaScript中的Array对象使用说明
Jan 17 Javascript
jQuery操作 input type=checkbox的实现代码
Jun 14 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
Aug 02 Javascript
javascript鼠标右键菜单自定义效果
Dec 08 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
Feb 25 Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
Vuejs中使用markdown服务器端渲染的示例
Nov 22 Javascript
Vue组件中slot的用法
Jan 30 Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
17道题让你彻底理解JS中的类型转换
Aug 08 Javascript
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
在php MYSQL中插入当前时间
2008/04/06 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
Javascript之String对象详解
2016/06/08 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
Python实现telnet服务器的方法
2015/07/10 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Python守护线程用法实例
2017/06/23 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
大学生应聘推荐信范文
2013/11/19 职场文书
培训主管的岗位职责
2013/11/23 职场文书
粗加工管理制度
2014/02/04 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
清明节演讲稿
2014/05/27 职场文书
个人委托书范本汇总
2014/10/01 职场文书
辞职信范文大全
2015/03/02 职场文书
九年级语文教学反思
2016/03/03 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android