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基础函数整理汇总
Jan 30 Javascript
JS实现文字放大效果的方法
Mar 03 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
Aug 31 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
Oct 01 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
Dec 10 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
Nov 03 Javascript
jQuery和JavaScript节点插入元素的方法对比
Nov 18 Javascript
vue component组件使用方法详解
Jul 14 Javascript
JavaScript代码执行的先后顺序问题
Oct 29 Javascript
jQuery EasyUI window窗口使用实例代码
Dec 25 jQuery
vue实现PC端录音功能的实例代码
Jun 05 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/10/09 PHP
一个简单计数器的源代码
2006/10/09 PHP
PHP安全配置
2006/12/06 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
一个简单的php路由类
2016/05/29 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
python对url格式解析的方法
2015/05/13 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
python制作朋友圈九宫格图片
2019/11/03 Python
python简单实现插入排序实例代码
2020/12/16 Python
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
英文版区域经理求职信
2013/10/23 职场文书
大学生读书笔记大全
2015/07/01 职场文书
小学运动会前导词
2015/07/20 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python