vue项目接口域名动态获取操作


Posted in Javascript onAugust 13, 2020

需求:

接口域名是从外部 .json 文件里获取的。

思路:

在开始加载项目前 进行接口域名获取,然后重置 接口域名的配置项。

实现:

1、config/index.js 文件 进行基础配置

import axios from 'axios'

const config = {
 requestUrl: 'http://qiniu.eightyin.cn/path.json', //动态域名所在地址
 baseUrl: {
  dev: '/api/',
  pro: 'http://xxx.com/' // 接口域名,会被动态覆盖
 },

 requestRemoteIp: () => { // 动态获取
  return new Promise((resolve, reject) => {
   axios.get(config.requestUrl).then(response =>
   {
  
    config.baseUrl.pro = response.data.data.path;
    config.img.domain = config.baseUrl.pro;
    resolve()
   }, err => {
    reject()
   });
  });
 }
}

export default config

2、项目下main.js 文件 进行动态获取

import config from '@/config/index.js'

// 读取接口域名
config.requestRemoteIp().finally(res => {
 /* eslint-disable no-new */
 new Vue({
  el: '#app',
 
  router,
  components: { App },
  template: '<App/>'
 })
});

3、请求数据

const instance = axios.create({
   baseURL: process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro
  })

补充知识:webpack + vue 打包生成公共配置文件(域名) 方便动态修改

需求原因

原来的项目中域名是打包到项目里面的,打包后不能动态配置,只能通过不同的指令打包来切换域名,每天都在测试域名和正式域名来回摩擦,后台大佬说你们可以生成一个配置文件这样就不用频繁打包了直接修改配置文件就好,于是就有了这篇文章。

第一步 安装插件

npm install --save-dev generate-asset-webpack-plugin

第二步 新建配置文件

在项目的根目录下新建 serverConfig.json 以后会根据这个文件去生成打包的配置文件

{"ProdUrl":"http://text.com"}

第三步 引入generate-asset-webpack-plugin

在build/webpack.prod.conf.js中添加

const GenerateAssetPlugin = require('generate-asset-webpack-plugin');
const serverConfig = require('../serverConfig.json');//引入根目录下的配置文件

const createJson = function() {
 return JSON.stringify(serverConfig);
};

//plugins 中使用
 plugins: [
  //打包时生成一个配置文件
  new GenerateAssetPlugin({
   filename: 'serverConfig.json',
   fn: (compilation, cb) => {
     cb(null, createJson());
   },
 }),
]

第四步 使用配置文件中的内容

这里根据不同项目不同需求代码自行变换,我分享一下我的项目里的使用。在main.js 中vue实例初始化之前将baseURL存到本地

axios.get('serverConfig.json').then( e => {
 let baseURL = e.data.ProdUrl
 localStorage.setItem("baseURL", baseURL);
 new Vue({
  el: '#app',
  router,
  store,
  i18n,
  render: h => h(App)
 })
})

由于是使用axios获取,是异步方法,根据情况进行处理。、

好了接下来就再也不用为了域名每天build了

打包后的目录

vue项目接口域名动态获取操作

以上这篇vue项目接口域名动态获取操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
DIV始终居中的js代码
Feb 17 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
May 04 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
JavaScript的原型继承详解
Feb 15 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
利用fecha进行JS日期处理
Nov 21 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
Apr 05 Javascript
vue和webpack打包项目相对路径修改的方法
Jun 15 Javascript
JS中call和apply函数用法实例分析
Jun 20 Javascript
vue接通后端api以及部署到服务器操作
Aug 13 #Javascript
vue打包npm run build时候界面报错的解决
Aug 13 #Javascript
解决vue项目,npm run build后,报路径错的问题
Aug 13 #Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
Aug 13 #Javascript
vue实现把接口单独存放在一个文件方式
Aug 13 #Javascript
js实现幻灯片轮播图
Aug 14 #Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 #Javascript
You might like
php a simple smtp class
2007/11/26 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
python在命令行下使用google翻译(带语音)
2014/01/16 Python
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
大学校庆邀请函
2014/01/11 职场文书
人事档案接收函
2014/01/12 职场文书
自我鉴定三原则
2014/01/13 职场文书
安全生产投入制度
2014/01/29 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL