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 相关文章推荐
HTML TO JavaScript 转换
Jun 26 Javascript
不用MOUSEMOVE也能滑动啊
May 23 Javascript
关于jquery动态增减控件的一些想法和小插件
Aug 01 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
JavaScript生成GUID的多种算法小结
Aug 18 Javascript
可选择和输入的下拉列表框示例
Nov 05 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
Dec 04 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
Jun 10 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
Dec 12 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
Jan 05 Javascript
javascript输出AscII码扩展集中的字符方法
Dec 26 Javascript
vue如何搭建多页面多系统应用
Jun 17 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 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
Java中final关键字详解
2015/08/10 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
Python解决八皇后问题示例
2018/04/22 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
基于Python函数和变量名解析
2019/07/19 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
入学生会自荐书范文
2014/02/05 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
党员志愿者活动方案
2014/08/28 职场文书
三好生演讲稿
2014/09/12 职场文书
父亲去世追悼词
2015/06/23 职场文书
狂人日记读书笔记
2015/06/30 职场文书