一般的项目环境分为:本地环境,测试环境,预发环境,正式环境。 这些环境的域名一般是一样的, 前端请求接口的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="/UploadFiles/2021-04-02/codeImgSrc">以上这篇vue实践---根据不同环境,自动转换请求的url地址操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
vue,自动转换请求,url地址
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]