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 相关文章推荐
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
Jul 26 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
使用非html5实现js板连连看游戏示例代码
Sep 22 Javascript
JavaScript实现的双向跨域插件分享
Jan 31 Javascript
JavaScript实现删除,移动和复制文件的方法
Aug 05 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
Sep 07 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
JavaScript中Array对象用法实例总结
Nov 29 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
Feb 17 Javascript
解决vue中对象属性改变视图不更新的问题
Feb 23 Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 Javascript
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
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留言本实例代码
2010/05/09 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
详谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/25 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
JavaScript指定断点操作实例教程
2018/09/18 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
python画微信表情符的实例代码
2019/10/09 Python
python中自带的三个装饰器的实现
2019/11/08 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
初二政治教学反思
2014/01/12 职场文书
运动会稿件50字
2014/02/17 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
压缩Redis里的字符串大对象操作
2021/06/23 Redis
MySQL池化框架学习接池自定义
2022/07/23 MySQL