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分页函数代码
Sep 10 Javascript
jQuery学习笔记之基础中的基础
Jan 19 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
关于定制FileField中的上传文件名称问题
Aug 22 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
Jan 31 Javascript
vue2 前端搜索实现示例
Feb 26 Javascript
通过封装scroll.js 获取滚动条的值
Jul 13 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
Jan 27 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
May 10 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
May 16 Javascript
vue实现自定义多选按钮
Jul 16 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中将数组存到文件里的实现代码
2012/01/19 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
一些javascript一些题目的解析
2010/12/25 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
Python做文本按行去重的实现方法
2016/10/19 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
消防战士优秀事迹材料
2014/02/13 职场文书
个人承诺书格式
2014/06/03 职场文书
会计求职自荐信
2014/06/20 职场文书
2014年医生工作总结
2014/11/21 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
2015年个人思想总结
2015/03/09 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
python使用glob检索文件的操作
2021/05/20 Python
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers