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禁止小键盘输入数字功能代码
Aug 01 Javascript
js分页代码分享
Apr 28 Javascript
详解AngularJS中自定义过滤器
Dec 28 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
Mar 30 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
Apr 23 Javascript
React学习笔记之条件渲染(一)
Jul 02 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
JS面向对象的程序设计相关知识小结
May 26 Javascript
JS返回页面时自动回滚到历史浏览位置
Sep 26 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 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使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
jquery $.ajax入门应用一
2008/11/19 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
Vue中props的详解
2019/05/16 Javascript
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
python selenium firefox使用详解
2019/02/26 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
房地产端午节活动方案
2014/08/24 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
大学辅导员述职报告
2015/01/10 职场文书
慰问信格式规范
2015/03/23 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
创业计划书之珠宝饰品
2019/08/26 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python