🔥 Vue 开发者的“外挂”库: 让你秒变超级赛亚人!🔥


引言:为什么你需要 @vueuse/core

作为 Vue 开发者,你是否经常遇到以下问题?

  • 🤯 重复造轮子:防抖、节流、滚动监听、设备传感器...... 这些功能每次都要自己实现?
  • 😫 代码臃肿 :处理 v-modellocalStorageWebSocket 时,代码写得又长又乱?
  • 🚀 想要更高效:有没有一个库能像"外挂"一样,直接提供现成的工具函数?

答案就是------@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 开发技巧! 🚀

相关推荐
一只一只妖3 小时前
突发奇想,还未实践,在Vben5的Antd模式下,将表单从「JS 配置化」改写成「模板可视化」形式(豆包版)
前端·javascript·vue.js
悟能不能悟5 小时前
js闭包问题
开发语言·前端·javascript
秋秋_瑶瑶5 小时前
vue-amap组件呈现的效果图如何截图
前端·javascript·vue-amap
LFly_ice6 小时前
学习React-9-useSyncExternalStore
javascript·学习·react.js
gnip7 小时前
js上下文
前端·javascript
中草药z7 小时前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流
醉方休7 小时前
React中使用DDD(领域驱动设计)
前端·react.js·前端框架
学习3人组7 小时前
React 样式隔离核心方法和最佳实践
前端·react.js·前端框架
世伟爱吗喽7 小时前
threejs入门学习日记
前端·javascript·three.js
F2E_Zhangmo8 小时前
基于cornerstone3D的dicom影像浏览器 第五章 在Displayer四个角落显示信息
开发语言·前端·javascript