一、Vue浅析axios二次封装
-
axios介绍
Axios是一个基于Promise的HTTP库,用于ajax请求。它在浏览器和Node环境中均可使用,并支持拦截器、请求与响应的取消、自动转换JSON数据、客户端防止CSRF等常见功能。 -
Vue中使用axios的步骤
Vue中使用axios需要先导入axios库,然后在Vue实例中进行配置即可。常见的配置包括:baseURL、timeout、headers等。
下面是一个示例代码:
import axios from 'axios';
// 创建axios实例
const instance = axios.create({
baseURL: 'https://api.example.com',
timeout: 5000,
headers: {
'Content-Type': 'application/json;charset=utf-8'
}
});
// 发送请求时添加token
instance.interceptors.request.use(
config => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = token;
}
return config;
},
error => Promise.reject(error)
);
export default instance;
这个示例代码定义了一个名为instance的axios实例,并且进行了一些常见的配置,例如设置请求的基本URL、超时时间、请求头中的Content-Type,并且使用了拦截器对请求进行了处理。在每次请求发送时,还会从localStorage中获取token,并添加到请求头中。
二、Vue中节流与防抖的实现
- 什么是节流与防抖
在前端开发中,由于某些事件会频繁触发,例如window.onresize、scroll等事件,会导致一些不必要的性能问题,如频繁地发送请求、一些复杂的计算等。这时,我们就需要通过节流(throttle)和防抖(debounce)这两种方法来优化性能。
节流和防抖的主要区别在于:节流会在一定时间内只触发一次事件,而防抖则是在触发事件后,等待一段时间后才会执行。
- Vue中实现节流与防抖
实现节流和防抖的方法有很多种,这里只介绍基于Vue的两种实现方法:
(1)使用lodash工具库
lodash是一个js工具库,提供了很多常用的工具函数,包括节流和防抖函数。在Vue中使用lodash库可以大大简化代码量。
下面是一个使用lodash库实现节流的示例代码:
<template>
<div @scroll="throttleHandler"></div>
</template>
<script>
import { throttle } from 'lodash';
export default {
data() {
return {
count: 0
};
},
methods: {
throttleHandler: throttle(function() {
this.count++
}, 1000)
}
};
</script>
这个示例代码中,throttleHandler方法被throttle函数包装,就可以实现在一定时间内只触发一次事件。
(2)手写实现节流
手写实现节流函数的代码非常简单,下面是一个示例代码:
<template>
<div @scroll="throttleHandler"></div>
</template>
<script>
export default {
data() {
return {
count: 0
};
},
methods: {
throttleHandler() {
// 节流时间间隔1秒
const now = Date.now();
if (now - this.lastTime > 1000) {
this.count++;
this.lastTime = now;
}
}
}
};
</script>
这个示例代码中,使用lastTime保存上一次触发事件的时间,判断当前时间与上一次时间的时间差是否大于节流的时间间隔,如果大于,则执行对应操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue浅析axios二次封装与节流及防抖的实现 - Python技术站