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实现状态限定编辑的代码
Feb 11 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
JavaScript中的prototype.bind()方法介绍
Apr 04 Javascript
js实现最短的XML格式化工具实例
Mar 12 Javascript
JavaScript三元运算符的多种使用技巧
Apr 16 Javascript
jquery获得当前html页面源码的方法
Jul 14 Javascript
基于 Node.js 实现前后端分离
Apr 23 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
Aug 17 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
Jun 15 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
Feb 28 Javascript
微信小程序实现图片上传功能
May 28 Javascript
webpack 开发和生产并行设置的方法
Nov 08 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&amp;MYSQL留言板源码
2020/07/19 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
通过python实现弹窗广告拦截过程详解
2019/07/10 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
Django多数据库的实现过程详解
2019/08/01 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
革命先烈的英雄事迹材料
2014/02/15 职场文书
怎样写离婚协议书
2014/09/10 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫