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 相关文章推荐
点击文章内容处弹出页面代码
Oct 01 Javascript
jQuery对象与DOM对象之间的转换方法
Apr 15 Javascript
jquery ajax post提交数据乱码
Nov 05 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
Nov 19 Javascript
jQuery实现视频作为全屏幕背景
Dec 18 Javascript
D3.js实现直方图的方法详解
Sep 25 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
Jun 15 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
Jul 20 Javascript
vue自定义指令用法经典实例小结
Mar 16 Javascript
详解elementUI中input框无法输入的问题
Apr 27 Javascript
详解Node.js如何处理ES6模块
May 15 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学习之 数组声明
2011/06/09 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
用js遍历 table的脚本
2008/07/23 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
基于JS判断对象是否是数组
2020/01/10 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
Python中正则表达式的详细教程
2015/04/30 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
python利用7z批量解压rar的实现
2019/08/07 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
社区国庆节活动方案
2014/02/05 职场文书
淘宝客服工作职责
2014/07/11 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书