Vue3 爆款实用插件教程

0 阅读8分钟

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%的高频场景,示例可直接复制到项目中使用,无需复杂修改;后续开发遇到工具、多语言、移动端相关需求,直接查这篇即可!