带你玩转vue——高效封装axios

简介: 带你玩转vue——高效封装axios

前言


作为一名一入坑就使用java的猿子,本着万物皆可对象的原则,研究出如何将axios封装成更简单实用的“对象”。

之前本猿子就非常讨厌ajax又臭又长的执行函数,和其他地方整齐的代码一比较,感觉low爆了,所以有了下面滴故事。。。


栗子


使用过vue的猿子都知道它的兼容性非常好,我们可以将很多第三方插件或者自己的方法注册到vue中,就像之前说的它就像一个脚手架!

首先我们需要在项目中安装axios:


npm install axios

1

在main.js中引入:


import axios from 'axios';

1

注册:


Vue.prototype.axios = axios;

1

开始封装:

/**
 * 封装请求方法
 * @param me 传入this,以便获取vuex中的对象,token是我们需要向后端传递的秘钥进行身份验证
 * @param url 传入需要访问的地址
 * @param data 传入需要发送的数据,headers根据个人的需求进行修改
 */
Vue.prototype.request = (me, url, data) => {
  let token = `?token=${me.$store.state.token}`;
  let headers = { "X-Requested-With": "XMLHttpRequest" };
  return axios({
    method: 'post',
    url: url + token,
    headers,
    data,
  })
    .then(res => {
        //返回函数这里,根据自己封装的返回对象进行解析
        if (res.data.code == 0) {
          return res.data.data;
        }else if(res.data.code == 1){
          me.errAlert(res.data.msg);
        }
    })
    .catch((err) => {
      me.errAlert("连接错误");
      console.log('***request error' + err);
    });
};

此时需要调用验证一下:


var param = {
    'username': 'wx',
    'password': '123456'
  }
 this.request(this, 'public/login', param)
    .then(res => {
      if (res != null) {
      //逻辑判断。。。。
      }
    })
    .catch(err => console.log('request error => ' + err));


通过以上操作,我们成功地将axios封装起来,代码行数大大减少,也变得更加整齐了!

but。。。

请求地址404


请看这里!!!


我只传递了方法路径,并没有服务器地址,那么怎么样才能做到只传方法路径就可以访问到服务呢?


请看这里!!!


axios.defaults.baseURL = window.config.Host;

1

看到baseurl大家基本上就明白了,可以通过设置axios的属性将服务器地址预设进去!

那么window.config.Host又是啥玩意呢?


<script>
  window.config = {
    Host: 'http://127.0.0.1:7001/helloWorld/'
  };
</script>


大家都知道,如果我们将公共路径放入vuex中进行保存的话,一旦打包完成路径就没法修改了,因为在打包过程中你的路径已经被编译了!我们将打完的前端工程包交给实施自然不希望他们再来打扰我们,所以我们将公共路径设置放在index.html的js中,因为html页面是不会被编译的,需要修改的时候只需要用 马赛克++ 打开修改一下就可以了!

完美!撒花!


相关文章
|
6天前
Vue3——基于tdesign封装一个通用的查询组件
Vue3——基于tdesign封装一个通用的查询组件
29 3
|
12天前
|
JavaScript API 开发者
vue自定义Hooks函数使用和封装思想
【8月更文挑战第8天】vue自定义Hooks函数使用和封装思想
43 1
|
14天前
|
JavaScript 测试技术 持续交付
在vue中封装第三方组件的标准
在Vue.js项目中,第三方组件库虽能提升开发效率与用户体验,但直接使用可能导致代码结构混乱和样式冲突。为此,本文介绍如何优雅封装第三方组件,包括封装的目的、准备步骤、具体实现方法及处理样式冲突的策略。通过创建专门的封装组件、设计简洁的接口以及有效地管理样式,不仅能统一应用风格,还能显著提高代码的可维护性和可复用性。此外,还提供了封装Element UI Button组件的具体示例,帮助开发者更好地理解封装流程。
|
4天前
|
JavaScript API
Vue中如何完成对axios的二次封装、统一接口管理
这篇文章介绍了在Vue项目中如何对axios进行二次封装,实现接口的统一管理和简化请求过程,包括创建api包、编写request.js、在main.js中引入封装好的axios以及在项目中发送请求的方法。
Vue中如何完成对axios的二次封装、统一接口管理
|
10天前
|
JavaScript UED
以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!
以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!
|
10天前
|
JavaScript API 数据格式
【Vue 3】如何封装一个超级好用的 Hook!
【Vue 3】如何封装一个超级好用的 Hook!
|
17天前
|
JavaScript 前端开发
vue引入axios出现Module parse failed: Unexpected token (5:2)
vue引入axios出现Module parse failed: Unexpected token (5:2) 页面显示 Cannot GET /
|
19天前
|
存储 开发框架 前端开发
基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
|
6天前
|
JavaScript
Vue封装分页下拉选择器的组件
该组件名为,它将整合Element UI的下拉选择器和分页组件,以实现一个功能丰富的下拉选择器。用户可以通过搜索来过滤选项,并通过分页来浏览结果。
13 0
|
30天前
|
JSON JavaScript 前端开发
Vue中的axios深度探索:从基础安装到高级功能应用的全面指南
在Vue项目中,高效的前后端通信是构建丰富用户体验的关键。axios作为前端与后端沟通的桥梁,其重要性不言而喻。本文将带您领略axios的魅力,从基本概念、安装方法,到高级应用技巧,助您快速掌握在Vue中利用axios进行HTTP请求的精髓。我们不仅会探讨axios的基础用法,如GET、POST请求,还将深入探索跨域配置、全局注册以及设置拦截器等高级功能,助您轻松实现优雅的前后端通信。