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 相关文章推荐
给应用部分的js代码设定一个统一的入口
Jun 15 Javascript
Javascript获取CSS伪元素属性的实现代码
Sep 28 Javascript
jQuery判断一个元素是否可见的方法
Jun 05 Javascript
基于zepto的移动端轻量级日期插件--date_picker
Mar 04 Javascript
探索Vue.js component内容实现
Nov 03 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
原生js编写焦点图效果
Dec 08 Javascript
Vue.js计算属性computed与watch(5)
Dec 09 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
Sep 21 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
Nov 13 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 Javascript
微信小程序用户盒子、宫格列表的实现
Jul 01 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
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
javascript实现放大镜功能
2020/12/09 Javascript
python获取多线程及子线程的返回值
2017/11/15 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
运动会四百米广播稿
2014/01/19 职场文书
赔偿协议书范本
2014/09/12 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
python基础之爬虫入门
2021/05/10 Python
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技