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 相关文章推荐
HTML代码中标签的全部属性 中文注释说明
Mar 26 Javascript
优化javascript的执行效率一些方法总结
Dec 25 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
Sep 22 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
Aug 26 Javascript
微信小程序 石头剪刀布实例代码
Jan 04 Javascript
jQuery实现最简单实用的分秒倒计时
Feb 05 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
Mar 02 Javascript
以v-model与promise两种方式实现vue弹窗组件
May 21 Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 Javascript
vue鼠标悬停事件实例详解
Apr 01 Javascript
JavaScript实现答题评分功能页面
Jun 24 Javascript
微信小程序轮播图swiper代码详解
Dec 01 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防止post重复提交数据的简单例子
2014/06/07 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
PHP实现微信对账单处理
2018/10/01 PHP
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
小程序实现录音功能
2020/09/22 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
python使用selenium实现批量文件下载
2019/03/11 Python
一行python实现树形结构的方法
2019/08/09 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
EJB的几种类型
2012/08/15 面试题
电信专业应届生自荐信
2013/09/28 职场文书
三好学生自我鉴定
2013/12/17 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
网络营销计划
2015/01/17 职场文书
节约用电通知
2015/04/25 职场文书
小学教师教学随笔
2015/08/14 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript