引言:为什么你需要 @vueuse/core
?
作为 Vue 开发者,你是否经常遇到以下问题?
- 🤯 重复造轮子:防抖、节流、滚动监听、设备传感器...... 这些功能每次都要自己实现?
- 😫 代码臃肿 :处理
v-model
、localStorage
、WebSocket
时,代码写得又长又乱? - 🚀 想要更高效:有没有一个库能像"外挂"一样,直接提供现成的工具函数?
答案就是------@vueuse/core
! 🎉
它是一个 基于 Vue Composition API 的超级工具库 ,提供了 100+ 实用函数 ,涵盖 状态管理、DOM 操作、浏览器 API、动画、传感器 等方方面面,让你像开挂一样高效开发!
1. 状态管理:让数据"自动持久化"
🛠️ useStorage
:数据自动存到 localStorage
javascript
javascript
import { useStorage } from '@vueuse/core';
// 数据自动持久化到 localStorage,刷新页面不丢失!
const count = useStorage('count', 0);
// 修改数据
count.value++; // 自动保存到 localStorage
🛠️ useVModel
:简化 v-model
绑定
xml
vue
<template>
<input v-model="text" /> <!-- 无需手动 emit -->
</template>
<script setup>
import { useVModel } from '@vueuse/core';
const props = defineProps(['modelValue']);
const emit = defineEmits(['update:modelValue']);
const text = useVModel(props, 'modelValue', emit); // 一行代码搞定!
</script>
2. DOM 操作:像"透视挂"一样精准监控元素
📏 useElementSize
:实时监听元素尺寸
arduino
javascript
import { useElementSize } from '@vueuse/core';
const target = ref(null); // 绑定到 DOM 元素
const { width, height } = useElementSize(target); // 实时获取宽高
🖱️ useScroll
:监听滚动位置,实现"无限滚动"
scss
javascript
const { x, y } = useScroll(window); // 监听窗口滚动位置
// 示例:滚动到底部加载更多数据
if (y.value + window.innerHeight > document.body.scrollHeight - 100) {
loadMoreData();
}
3. 浏览器 API 封装:直接调用"系统级功能"
🌐 useFetch
:比 axios
更简单的请求方式
kotlin
javascript
const { data, error } = useFetch('https://api.example.com/data');
// 响应式数据,自动处理加载状态!
if (data.value) {
console.log('获取到的数据:', data.value);
}
📍 useGeolocation
:获取用户地理位置
markdown
javascript
const { coords, error } = useGeolocation(); // 无需手动调用 navigator.geolocation
if (coords.value) {
console.log('纬度:', coords.value.latitude);
}
4. 动画与过渡:让 UI 丝滑如"加速挂"
🎢 useTransition
:数值平滑过渡
ini
javascript
import { useTransition } from '@vueuse/core';
const isActive = ref(false);
const transitionedValue = useTransition(isActive, { duration: 1000 }); // 1秒平滑过渡
// 切换 isActive.value = !isActive.value,数值会自动过渡!
⏱️ useIntervalFn
:带暂停/恢复的定时器
scss
javascript
const { pause, resume } = useIntervalFn(() => {
console.log('每秒执行一次');
}, 1000);
// 暂停定时器
pause();
// 恢复定时器
resume();
5. 实用工具:代码简洁如"自瞄挂"
⏳ useDebounceFn
:防抖搜索,避免频繁请求
javascript
javascript
import { useDebounceFn } from '@vueuse/core';
const debouncedSearch = useDebounceFn(() => {
console.log('防抖搜索');
}, 500); // 500ms 内只执行一次
// 用户输入时调用
debouncedSearch();
🔄 useThrottleFn
:节流滚动,优化性能
javascript
javascript
const throttledScroll = useThrottleFn(() => {
console.log('节流滚动');
}, 200); // 每 200ms 最多执行一次
// 监听滚动事件时调用
window.addEventListener('scroll', throttledScroll);
6. 传感器与硬件:让你的应用"感知世界"
📱 useDeviceMotion
:监听设备加速度计
scss
javascript
const { x, y, z } = useDeviceMotion(); // 实时获取设备加速度数据
🔋 useBattery
:获取设备电池状态
scss
javascript
const { level, charging } = useBattery(); // 电池电量、是否充电
结语:@vueuse/core
------ Vue 开发者的"物理外挂"
🔥 @vueuse/core
提供了 100+ 工具函数,覆盖 90% 的日常开发需求!
- ✅ 减少重复代码,让你的代码更简洁!
- ✅ 提升开发效率,让你更快交付功能!
- ✅ 支持 Vue 2/3,兼容性极佳!
🚀 还在等什么?赶紧安装体验吧!
bash
bash
npm install @vueuse/core
💡 最后提醒:
"外挂"虽好,但不要滥用哦! 😉
合理使用
@vueuse/core
,让你的 Vue 项目更高效、更优雅!
🎯 关注我,带你解锁更多 Vue 开发技巧! 🚀