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

 更新时间:2020年09月21日 11:46:13   作者:进军的蜗牛  
这篇文章主要介绍了vue实践---根据不同环境,自动转换请求的url地址操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一般的项目环境分为:本地环境,测试环境,预发环境,正式环境。 这些环境的域名一般是一样的, 前端请求接口的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地址操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • element plus中el-upload实现上传多张图片的示例代码

    element plus中el-upload实现上传多张图片的示例代码

    最近写项目的时候需要一次上传多张图片,本文主要介绍了element plus中el-upload实现上传多张图片的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • vue部署包可配置后台接口地址的方法

    vue部署包可配置后台接口地址的方法

    这篇文章主要介绍了vue部署包可配置后台接口地址的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • vue实现物流时间轴效果

    vue实现物流时间轴效果

    这篇文章主要为大家详细介绍了vue实现物流时间轴效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • vue-form表单验证是否为空值的实例详解

    vue-form表单验证是否为空值的实例详解

    今天小编就为大家分享一篇vue-form表单验证是否为空值的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • vue项目优雅实现自动引入组件的方法详解

    vue项目优雅实现自动引入组件的方法详解

    在我们写vue项目的时候,都会引入一些组件库,有时候有可能还不止一个组件库,那么如何优雅的实现自动引入组件呢,下面小编就来和大家详细讲讲吧
    2023-09-09
  • element中el-form-item属性prop踩坑

    element中el-form-item属性prop踩坑

    最近需要用到vue,在el-form-item属性prop上遇到报错或者没绑定到数据,本文主要介绍了element中el-form-item属性prop踩坑,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 实现一个 Vue 吸顶锚点组件方法

    实现一个 Vue 吸顶锚点组件方法

    这篇文章主要介绍了实现一个 Vue 吸顶锚点组件方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Vue事件修饰符使用详细介绍

    Vue事件修饰符使用详细介绍

    在Vue中,修饰符处理了许多DOM事件的细节,让我们不再需要花大量的时间去处理这些烦恼的事情,而能有更多的精力专注于程序的逻辑处理
    2022-10-10
  • vue3项目中使用three.js的操作步骤

    vue3项目中使用three.js的操作步骤

    最近在学习Three.js相关的技术,恰逢Vue 3.0正式版也已推出,下面这篇文章主要给大家介绍了关于vue3项目中使用three.js的操作步骤,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • vue项目中vant tab改变标签颜色方式

    vue项目中vant tab改变标签颜色方式

    这篇文章主要介绍了vue项目中vant tab改变标签颜色方式,具有很好的参考价值,希望对大家有所帮助。
    2022-04-04

最新评论