背景
- 在项目开发中ajax请求是必不可缺少
- 一部分ajax请求不需要 loading 或则请求时间少于多少是不显示 loading
- 项目中对请求的同一化处理(错误处理,返回数据格式化处理,loading 处理,token 处理)
- 配置基于个人 vue 项目进行配置,已加载 vux 相关组件,会进行一些依赖的 import(可以按需配置)
1 | import Vue from 'vue' |
解决方案
对于 axios 的封装中我们定义几个参数进行申明
1 | // 加载最小时间 |
一般一个项目中的根 host 和 Content-Type 都是统一的,这里对 axios 进行统一的配置(如果这个后端需要 formData 格式的表单即 content-type='application/x-www-form-urlencoded;charset=utf-8'
数据,需要对请求数据进行表单序列化,比较快的方式就是引入 qs 库 qs.stringify
进行处理后传输)
1 | axios.defaults.headers.common['Content-Type'] = 'application/json' |
一般情况下项目中同一时刻都会有不止一个请求在进行(还没有返回),要判断当前是否还存在进行中的 ajax,就需要对_requests 这个数组进行维护;
1 | /** |
接下来对 axios 基于上面的准备进行处理
1 | /** |
完整代码