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 相关文章推荐
javascript Select标记中options操作方法集合
Oct 22 Javascript
自己的js工具 Cookie 封装
Aug 21 Javascript
javascript sudoku 数独智力游戏生成代码
Mar 27 Javascript
有关JavaScript的10个怪癖和秘密分享
Aug 28 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
js解析json读取List中的实体对象示例
Mar 11 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
javascript显示倒计时控制按钮的简单实现
Jun 07 Javascript
AngularJS之依赖注入模拟实现
Aug 19 Javascript
原生JS实现的双色球功能示例
Feb 02 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
Dec 17 Javascript
uni-app使用countdown插件实现倒计时
Nov 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 mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
如何实现JS函数的重载
2006/09/22 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
简单了解Python中的几种函数
2017/11/03 Python
python matplotlib画图实例代码分享
2017/12/27 Python
Python画图高斯分布的示例
2019/07/10 Python
pytorch数据预处理错误的解决
2020/02/20 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
zooplus波兰:在线宠物店
2019/07/21 全球购物
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
职专应届生求职信
2013/11/16 职场文书
学前班教师的自我鉴定
2013/12/05 职场文书
打架检讨书100字
2014/01/08 职场文书
军训自我鉴定怎么写
2014/02/13 职场文书
上班玩手机检讨书
2014/02/17 职场文书
团购业务员岗位职责
2014/03/15 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
高中历史教学反思
2016/02/19 职场文书
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers