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 相关文章推荐
在 IE 中调用 javascript 打开 Excel 表
Dec 21 Javascript
Javascript学习笔记1 数据类型
Jan 11 Javascript
javascript 鼠标拖动图标技术
Feb 07 Javascript
js类定义函数时用prototype与不用的区别示例介绍
Jun 10 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
Aug 10 Javascript
Bootstrap模态窗口源码解析
Feb 08 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
Feb 15 Javascript
JavaScript实现图片无缝滚动效果
Jul 07 Javascript
小程序Request的另类用法详解
Aug 09 Javascript
详解Vue.js 响应接口
Jul 04 Javascript
react实现复选框全选和反选组件效果
Aug 25 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
第四节--构造函数和析构函数
2006/11/16 PHP
php导入模块文件分享
2015/03/17 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
JS 强制设为首页的代码
2009/01/31 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python脚本和网页有何区别
2020/07/02 Python
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
公务员年度考核评语
2014/12/31 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL