2026/6/7 15:15:55
网站建设
项目流程
建一个网站需要哪些知识,深圳企业网站seo,cms网站开发需要学什么,兰州软件开发公司vueUse/core 基础与高阶应用指南 解锁 Vue 3 组合式 API 的超级能力 ✨ 引言
在 Vue 3 组合式 API 生态中#xff0c;vueUse/core 无疑是一颗璀璨的明星。它提供了上百个精心设计的组合式函数#xff0c;覆盖了从 DOM 操作到状态管理、从网络请求到浏览器 API 等几乎所有前端…vueUse/core 基础与高阶应用指南解锁 Vue 3 组合式 API 的超级能力 ✨引言在 Vue 3 组合式 API 生态中vueUse/core无疑是一颗璀璨的明星。它提供了上百个精心设计的组合式函数覆盖了从 DOM 操作到状态管理、从网络请求到浏览器 API 等几乎所有前端开发场景。本文将带你从基础到高阶全面掌握vueUse/core的使用技巧让你的 Vue 开发效率提升到新高度一、快速上手安装# npmnpminstallvueuse/core# yarnyarnaddvueuse/core# pnpmpnpmaddvueuse/core基础使用template div h1vueUse 示例/h1 p当前时间: {{ time }}/p button clicktoggle开关: {{ enabled }}/button /div /template script setup import { useNow, useToggle } from vueuse/core // 获取当前时间自动更新 const time useNow() // 创建一个开关状态 const [enabled, toggle] useToggle(false) /script二、核心功能分类1. 状态管理useLocalStorage - 本地存储状态template div input v-modelname placeholder请输入姓名 p你好{{ name }}/p /div /template script setup import { useLocalStorage } from vueuse/core // 状态自动持久化到 localStorage const name useLocalStorage(user-name, Vue 开发者) /scriptuseSessionStorage - 会话存储状态import{useSessionStorage}fromvueuse/core// 仅在会话期间保持的状态consttokenuseSessionStorage(auth-token,)2. 生命周期useMounted useUnmountedimport{useMounted,useUnmounted}fromvueuse/coreuseMounted((){console.log(组件已挂载)})useUnmounted((){console.log(组件已卸载)})useDebounceEffect - 防抖副作用template input v-modelsearchQuery placeholder搜索... /template script setup import { ref } from vue import { useDebounceEffect } from vueuse/core const searchQuery ref() // 300ms 防抖的搜索效果 useDebounceEffect( () { console.log(搜索:, searchQuery.value) // 执行搜索请求 }, [searchQuery], { delay: 300 } ) /script3. DOM 操作useElementSize - 元素尺寸监听template div refel classresizable p宽度: {{ width }}px/p p高度: {{ height }}px/p /div /template script setup import { ref } from vue import { useElementSize } from vueuse/core const el ref(null) const { width, height } useElementSize(el) /script style scoped .resizable { resize: both; overflow: auto; border: 2px solid #ccc; padding: 20px; min-width: 200px; min-height: 200px; } /styleuseClipboard - 剪贴板操作template div input v-modeltext placeholder输入要复制的内容 button clickcopy复制/button p{{ copied ? 已复制 : }}/p /div /template script setup import { ref } from vue import { useClipboard } from vueuse/core const text ref(Hello, vueUse!) const { copy, copied } useClipboard() /script4. 网络请求useFetch - 现代化的数据获取template div button clickrefetch刷新数据/button div v-ifpending加载中.../div div v-else-iferror错误: {{ error.message }}/div div v-else h2{{ data?.title }}/h2 p{{ data?.body }}/p /div /div /template script setup import { useFetch } from vueuse/core const { data, pending, error, refetch } useFetch( https://jsonplaceholder.typicode.com/posts/1 ) /script5. 时间相关useCountdown - 倒计时器template div h2倒计时: {{ formattedTime }}/h2 button clickstart开始/button button clickpause暂停/button button clickreset重置/button /div /template script setup import { computed } from vue import { useCountdown } from vueuse/core // 设置倒计时30秒 const targetDate new Date(Date.now() 30000) const { days, hours, minutes, seconds, isActive, start, pause, reset } useCountdown( targetDate, { interval: 1000 } ) // 格式化显示 const formattedTime computed(() ${minutes.value.toString().padStart(2, 0)}:${seconds.value.toString().padStart(2, 0)} ) /script三、高级应用技巧1. 自定义组合式函数基于vueUse的工具函数我们可以构建自己的组合式函数import{useLocalStorage,useDebounce,useEventListener}fromvueuse/coreimport{ref,computed}fromvue/** * 带防抖的本地存储搜索状态 */exportfunctionuseDebouncedSearch(initialValue,delay300){// 本地存储的搜索词constrawSearchuseLocalStorage(search-query,initialValue)// 防抖处理后的搜索词constsearchuseDebounce(rawSearch,delay)// 清空搜索constclear(){rawSearch.value}// 搜索是否为空constisEmptycomputed(()!search.value)// 监听 Enter 键搜索useEventListener(document,keydown,(e){if(e.keyEnter){// 触发搜索事件window.dispatchEvent(newCustomEvent(search,{detail:search.value}))}})return{search,rawSearch,clear,isEmpty}}使用自定义的组合式函数template input v-modelrawSearch placeholder搜索... button clickclear清空/button div v-if!isEmpty搜索结果: {{ search }}/div /template script setup import { useDebouncedSearch } from ./composables/useDebouncedSearch const { search, rawSearch, clear, isEmpty } useDebouncedSearch() /script2. 插件扩展vueUse支持通过插件系统进行扩展// main.jsimport{createApp}fromvueimport{createVueUse}fromvueuse/coreimportAppfrom./App.vueconstappcreateApp(App)// 创建 vueUse 实例constvueUsecreateVueUse()// 注册全局插件app.use(vueUse)app.mount(#app)3. 性能优化useMemoize - 函数结果缓存import{useMemoize}fromvueuse/core// 计算密集型函数constexpensiveCalculation(a,b){console.log(执行计算...)returnab}// 缓存计算结果constmemoizedCalculateuseMemoize(expensiveCalculation)// 第一次执行输出 执行计算... 并返回结果console.log(memoizedCalculate(1,2))// 3// 第二次执行直接返回缓存结果不输出日志console.log(memoizedCalculate(1,2))// 3useThrottleFn - 函数节流import{useThrottleFn}fromvueuse/core// 节流处理的函数1秒内最多执行一次constthrottledFnuseThrottleFn((){console.log(执行了节流函数)// 执行一些高频操作},1000)// 连续调用只会每隔1秒执行一次throttledFn()throttledFn()throttledFn()四、最佳实践与注意事项1. 按需导入vueUse支持 tree-shaking建议按需导入以减小打包体积// 推荐按需导入import{useNow,useToggle}fromvueuse/core// 不推荐导入整个库import*asVueUsefromvueuse/coreconst{useNow}VueUse2. 合理使用缓存对于网络请求和计算密集型操作使用useFetch的缓存功能或useMemoize可以显著提升性能const{data,refetch}useFetch(https://api.example.com/data,{cache:true,// 启用缓存cacheTTL:60000// 缓存有效期1分钟})3. 注意生命周期管理使用 DOM 相关的组合式函数时确保在组件挂载后使用// 推荐在组件挂载后使用 DOM 相关函数useMounted((){const{width,height}useElementSize(el)// ...})// 或者使用条件判断if(el.value){const{width,height}useElementSize(el)// ...}五、总结vueUse/core为 Vue 3 开发者提供了一个强大而丰富的组合式函数库它不仅能够极大地提升开发效率还能帮助我们编写更加优雅、可维护的代码。从基础的 DOM 操作到复杂的状态管理从简单的时间处理到高级的性能优化vueUse几乎覆盖了前端开发的方方面面。通过本文的学习相信你已经对vueUse/core有了全面的了解。在实际项目中建议你根据需求选择合适的组合式函数并结合本文介绍的高级技巧充分发挥vueUse的威力✨最后别忘了持续关注vueUse的官方更新它的生态系统还在不断壮大参考资料vueUse 官方文档Vue 3 组合式 API 文档MDN Web API 参考