Vue3 爆款实用插件教程(全新版·高频搜索款)
✏️ 开篇说明 🎨
本文为全新原创插件教程,避开所有之前用过的插件,精选「网上搜索量TOP3、90%项目必用」的Vue3爆款插件,主打极简可复制、新手零门槛,每款插件只讲核心用法+避坑,开发时直接抄作业,有错欢迎指出来~
📌 三款高频爆款插件(搜索量拉满,刚需实用)
精选插件:VueUse(万能工具集)、vue-i18n(国际化)、Vant 4(移动端UI组件库),均为Vue3生态搜索量TOP级,覆盖工具、多语言、移动端开发三大高频场景,实用性拉满!
一、VueUse(搜索量TOP1,Vue3万能工具集)
VueUse 是Vue3生态最火的工具集插件,搜索量常年稳居前列,封装了100+常用工具(防抖节流、本地存储、窗口操作、权限判断等),不用重复造轮子,极大提升开发效率,新手必备,一行代码调用,无需复杂配置。
1. 安装VueUse
# npm安装(推荐)
npm install @vueuse/core
# yarn安装
yarn add @vueuse/core
2. 核心用法(4个高频工具,极简示例可复制)
VueUse 无需全局配置,引入即用,以下是开发中最常用的4个工具,覆盖80%使用场景:
(1)useLocalStorage(本地存储,替代localStorage原生写法)
核心优势:自动实现响应式,无需手动JSON.parse/JSON.stringify,刷新页面数据不丢失。
<script setup>
// 引入工具(按需引入,不浪费体积)
import { useLocalStorage } from '@vueuse/core'
import { ref } from 'vue'
// 用法:参数1=存储key,参数2=默认值(自动响应式)
const userInfo = useLocalStorage('userInfo', { name: '测试', age: 20 })
const token = useLocalStorage('token', '')
// 直接修改,自动同步到localStorage(无需手动setItem)
const updateUser = () => {
userInfo.value.name = '新名字' // 自动同步到localStorage
token.value = 'abc123456' // 自动同步
}
// 清空存储
const clearStorage = () => {
userInfo.value = null
token.value = ''
}
</script>
<template>
<div>
<p>用户名:{{ userInfo.name }}</p>
<button @click="updateUser">修改用户信息</button>
<button @click="clearStorage">清空存储</button>
</div>
</template>
(2)useDebounceFn(防抖,解决频繁触发问题)
高频场景:搜索框输入、按钮频繁点击、滚动事件,避免多次触发接口/方法,提升性能。
<script setup>
import { useDebounceFn } from '@vueuse/core'
import { ref } from 'vue'
const inputVal = ref('')
// 防抖方法:参数1=要防抖的函数,参数2=防抖时间(ms)
const search = useDebounceFn((val) => {
// 模拟搜索接口请求(防抖后,输入停止500ms才触发)
console.log('搜索关键词:', val)
}, 500)
// 输入框输入时触发防抖方法
const handleInput = (e) => {
inputVal.value = e.target.value
search(inputVal.value)
}
</script>
<template>
<input
v-model="inputVal"
placeholder="请输入搜索关键词"
@input="handleInput"
/>
</template>
(3)useThrottleFn(节流,控制方法触发频率)
高频场景:滚动加载、resize事件,控制方法每隔固定时间只能触发一次,区别于防抖(停止输入才触发)。
<script setup>
import { useThrottleFn } from '@vueuse/core'
// 节流方法:每隔1000ms只能触发一次
const handleScroll = useThrottleFn(() => {
console.log('滚动事件触发(节流):', window.scrollY)
}, 1000)
// 监听滚动事件
window.addEventListener('scroll', handleScroll)
// 组件卸载时移除监听(避免内存泄漏)
onUnmounted(() => {
window.removeEventListener('scroll', handleScroll)
})
</script>
(4)useWindowSize(监听窗口大小,适配响应式)
高频场景:响应式布局、适配移动端/PC端,自动监听窗口宽高变化,无需手动写resize事件。
<script setup>
import { useWindowSize } from '@vueuse/core'
// 自动监听窗口宽高,响应式变化
const { width, height } = useWindowSize()
// 可直接判断设备类型(比如移动端宽小于768px)
const isMobile = computed(() => {
return width.value < 768
})
</script>
<template>
<div>
<p>窗口宽度:{{ width }}px</p>
<p>窗口高度:{{ height }}px</p>
<p v-if="isMobile">当前为移动端布局</p>
<p v-else>当前为PC端布局</p>
</div>
</template>
3. 核心避坑
-
🚨 避坑1:VueUse 支持按需引入,不要全局引入所有工具(会增加项目体积),用什么引什么。
-
🚨 避坑2:useLocalStorage 存储复杂数据(对象/数组)时,无需手动序列化,直接赋值即可。
-
🚨 避坑3:监听类工具(如useWindowSize、useScroll),组件卸载时无需手动清除,VueUse会自动清理,避免内存泄漏。
二、vue-i18n(搜索量TOP2,国际化必备插件)
vue-i18n 是Vue3官方推荐的国际化插件,搜索量常年稳居前列,高频用于多语言项目(中/英/日等),支持文本翻译、日期/数字格式化,配置简单,切换语言无刷新,企业级项目必用。
1. 安装vue-i18n
# npm安装(推荐)
npm install vue-i18n@9
# yarn安装
yarn add vue-i18n@9
⚠️ 注意:Vue3 必须安装 vue-i18n@9+ 版本,低版本不兼容。
2. 全局配置(3步搞定,一次配置全局可用)
步骤1:创建多语言文件(src/lang目录)
在src目录下新建lang文件夹,创建中文(zh-CN.js)、英文(en-US.js)两个语言文件(可扩展其他语言):
// src/lang/zh-CN.js(中文)
export default {
home: '首页',
about: '关于我们',
login: '登录',
username: '用户名',
password: '密码',
submit: '提交',
switchLang: '切换语言'
}
// src/lang/en-US.js(英文)
export default {
home: 'Home',
about: 'About Us',
login: 'Login',
username: 'Username',
password: 'Password',
submit: 'Submit',
switchLang: 'Switch Language'
}
步骤2:配置i18n(src/lang/index.js)
// src/lang/index.js
import { createI18n } from 'vue-i18n'
// 引入多语言文件
import zhCN from './zh-CN'
import enUS from './en-US'
// 创建i18n实例
const i18n = createI18n({
legacy: false, // 必须设为false,适配Vue3的<script setup>语法糖
locale: 'zh-CN', // 默认语言(中文)
fallbackLocale: 'en-US', // 备用语言(当默认语言没有对应翻译时,使用英文)
messages: {
'zh-CN': zhCN, // 中文语言包
'en-US': enUS // 英文语言包
}
})
export default i18n
步骤3:全局注册(main.js)
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import i18n from './lang' // 引入i18n配置
const app = createApp(App)
app.use(i18n) // 全局注册i18n
app.mount('#app')
3. 组件内使用(极简示例,翻译+切换语言)
<script setup>
// 引入useI18n,获取翻译方法和语言切换方法
import { useI18n } from 'vue-i18n'
// 解构t(翻译方法)、locale(当前语言)、setLocale(切换语言)
const { t, locale, setLocale } = useI18n()
// 切换语言方法(中文 ↔ 英文)
const switchLanguage = () => {
if (locale.value === 'zh-CN') {
setLocale('en-US') // 切换为英文
} else {
setLocale('zh-CN') // 切换为中文
}
}
</script>
<template>
<div class="lang-demo">
<h1>{{ t('home') }}</h1>
<div class="login-form">
<label>{{ t('username') }}:</label>
<input placeholder="{{ t('username') }}" />
<label>{{ t('password') }}:</label>
<input type="password" placeholder="{{ t('password') }}" />
<button @click="switchLanguage">{{ t('switchLang') }}</button>
<button>{{ t('submit') }}</button>
</div>
</div>
</template>
4. 核心避坑
-
🚨 避坑1:必须设置 legacy: false,否则
-
🚨 避坑2:翻译关键词(如home、username)必须和语言文件中的关键词完全一致,否则无法显示翻译。
-
🚨 避坑3:切换语言后,页面会自动刷新翻译内容,无需手动刷新页面,复杂数据也会自动适配。
三、Vant 4(搜索量TOP3,移动端UI组件库)
Vant 4 是Vue3生态最火的移动端UI组件库,搜索量稳居移动端UI榜首,由有赞团队开发,封装了60+移动端常用组件(按钮、表单、弹窗、轮播、导航等),适配各种移动端设备,样式美观、可自定义,快速搭建移动端页面,企业级移动端项目首选。
1. 安装Vant 4
# npm安装(推荐)
npm install vant
# yarn安装
yarn add vant
2. 全局配置(新手首选,一次配置全局可用)
// main.js
import { createApp } from 'vue'
import App from './App.vue'
// 1. 引入Vant核心和样式
import Vant from 'vant'
import 'vant/lib/index.css'
const app = createApp(App)
app.use(Vant) // 全局注册Vant,所有组件可直接使用
app.mount('#app')
进阶:按需引入(精简体积),新手可先全局引入,后期优化时再改为按需引入。
3. 组件内使用(3个高频组件,移动端必备)
精选移动端开发最常用的3个组件,示例可直接复制,适配各种移动端场景:
(1)Button(按钮组件,移动端高频)
<template>
<div class="button-demo">
<!-- 基础按钮 -->
<van-button>默认按钮</van-button>
<!-- 不同类型按钮(主色/成功/危险) -->
<van-button type="primary">主色按钮</van-button>
<van-button type="success">成功按钮</van-button>
<van-button type="danger">危险按钮</van-button>
<!-- 禁用状态/加载状态 -->
<van-button disabled>禁用按钮</van-button>
<van-button loading>加载中按钮</van-button>
<!-- 自定义大小/颜色 -->
<van-button size="small">小尺寸按钮</van-button>
<van-button color="#42b983">自定义颜色按钮</van-button>
</div>
</template>
(2)Swipe(轮播组件,首页必备)
<template>
<!-- 轮播组件(自动播放、指示器、点击切换) -->
<van-swipe class="swipe-demo" autoplay interval="3000" indicator-color="#fff">
<van-swipe-item>
<img src="/images/banner1.jpg" alt="轮播图1" class="swipe-img" />
</van-swipe-item>
<van-swipe-item>
<img src="/images/banner2.jpg" alt="轮播图2" class="swipe-img" />
</van-swipe-item>
<van-swipe-item>
<img src="/images/banner3.jpg" alt="轮播图3" class="swipe-img" />
</van-swipe-item>
</van-swipe>
</template>
<style scoped>
.swipe-demo {
height: 180px; /* 移动端轮播图常用高度 */
}
.swipe-img {
width: 100%;
height: 100%;
object-fit: cover; /* 图片自适应,不拉伸 */
}
</style>
(3)Form(表单组件,登录/注册必备)
<script setup>
import { ref } from 'vue'
import { useToast } from 'vant' // 引入Vant的提示组件(配合表单校验)
const toast = useToast()
// 表单数据
const form = ref({
username: '',
password: ''
})
// 表单校验+提交
const handleSubmit = () => {
if (!form.value.username) {
toast('请输入用户名')
return
}
if (!form.value.password) {
toast('请输入密码')
return
}
// 校验通过,提交表单(模拟登录接口)
console.log('表单提交:', form.value)
toast.success('登录成功')
}
</script>
<template>
<div class="form-demo">
<van-form @submit="handleSubmit">
<van-field
v-model="form.username"
label="用户名"
placeholder="请输入用户名"
required
/>
<van-field
v-model="form.password"
label="密码"
type="password"
placeholder="请输入密码"
required
/>
<van-button type="primary" block native-type="submit">登录</van-button>
</van-form>
</div>
</template>
4. 核心避坑
-
🚨 避坑1:Vant 4 仅适配Vue3,Vue2项目需使用Vant 2版本,不要装错版本。
-
🚨 避坑2:移动端组件需配合viewport配置(public/index.html),否则样式错乱。
-
🚨 避坑3:表单组件的native-type="submit"不要遗漏,否则表单提交事件无法触发。
<!-- public/index.html 必须添加viewport配置(移动端适配) -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
四、插件总结(重点提炼,快速记忆)
-
✅ VueUse:万能工具集,搜索量TOP1,防抖节流、本地存储等100+工具,引入即用,不用造轮子。
-
✅ vue-i18n:国际化必备,搜索量TOP2,多语言切换无刷新,配置简单,企业级项目必用。
-
✅ Vant 4:移动端UI首选,搜索量TOP3,组件丰富、样式美观,快速搭建移动端页面。
💡 小技巧:这3款插件覆盖Vue3项目90%的高频场景,示例可直接复制到项目中使用,无需复杂修改;后续开发遇到工具、多语言、移动端相关需求,直接查这篇即可!