Vue3三款爆款實(shí)用插件教程(剛需實(shí)用)
開篇說明
本文為全新原創(chuàng)插件教程,避開所有之前用過的插件,精選「網(wǎng)上搜索量TOP3、90%項(xiàng)目必用」的Vue3爆款插件,主打極簡可復(fù)制、新手零門檻,每款插件只講核心用法+避坑,開發(fā)時(shí)直接抄作業(yè),有錯(cuò)歡迎指出來~
三款高頻爆款插件(搜索量拉滿,剛需實(shí)用)
精選插件:VueUse(萬能工具集)、vue-i18n(國際化)、Vant 4(移動(dòng)端UI組件庫),均為Vue3生態(tài)搜索量TOP級(jí),覆蓋工具、多語言、移動(dòng)端開發(fā)三大高頻場景,實(shí)用性拉滿!
一、VueUse(搜索量TOP1,Vue3萬能工具集)
VueUse 是Vue3生態(tài)最火的工具集插件,搜索量常年穩(wěn)居前列,封裝了100+常用工具(防抖節(jié)流、本地存儲(chǔ)、窗口操作、權(quán)限判斷等),不用重復(fù)造輪子,極大提升開發(fā)效率,新手必備,一行代碼調(diào)用,無需復(fù)雜配置。
1. 安裝VueUse
# npm安裝(推薦) npm install @vueuse/core # yarn安裝 yarn add @vueuse/core
2. 核心用法(4個(gè)高頻工具,極簡示例可復(fù)制)
VueUse 無需全局配置,引入即用,以下是開發(fā)中最常用的4個(gè)工具,覆蓋80%使用場景:
(1)useLocalStorage(本地存儲(chǔ),替代localStorage原生寫法)
核心優(yōu)勢:自動(dòng)實(shí)現(xiàn)響應(yīng)式,無需手動(dòng)JSON.parse/JSON.stringify,刷新頁面數(shù)據(jù)不丟失。
<script setup>
// 引入工具(按需引入,不浪費(fèi)體積)
import { useLocalStorage } from '@vueuse/core'
import { ref } from 'vue'
// 用法:參數(shù)1=存儲(chǔ)key,參數(shù)2=默認(rèn)值(自動(dòng)響應(yīng)式)
const userInfo = useLocalStorage('userInfo', { name: '測試', age: 20 })
const token = useLocalStorage('token', '')
// 直接修改,自動(dòng)同步到localStorage(無需手動(dòng)setItem)
const updateUser = () => {
userInfo.value.name = '新名字' // 自動(dòng)同步到localStorage
token.value = 'abc123456' // 自動(dòng)同步
}
// 清空存儲(chǔ)
const clearStorage = () => {
userInfo.value = null
token.value = ''
}
</script>
<template>
<div>
<p>用戶名:{{ userInfo.name }}</p>
<button @click="updateUser">修改用戶信息</button>
<button @click="clearStorage">清空存儲(chǔ)</button>
</div>
</template>
(2)useDebounceFn(防抖,解決頻繁觸發(fā)問題)
高頻場景:搜索框輸入、按鈕頻繁點(diǎn)擊、滾動(dòng)事件,避免多次觸發(fā)接口/方法,提升性能。
<script setup>
import { useDebounceFn } from '@vueuse/core'
import { ref } from 'vue'
const inputVal = ref('')
// 防抖方法:參數(shù)1=要防抖的函數(shù),參數(shù)2=防抖時(shí)間(ms)
const search = useDebounceFn((val) => {
// 模擬搜索接口請(qǐng)求(防抖后,輸入停止500ms才觸發(fā))
console.log('搜索關(guān)鍵詞:', val)
}, 500)
// 輸入框輸入時(shí)觸發(fā)防抖方法
const handleInput = (e) => {
inputVal.value = e.target.value
search(inputVal.value)
}
</script>
<template>
<input
v-model="inputVal"
placeholder="請(qǐng)輸入搜索關(guān)鍵詞"
@input="handleInput"
/>
</template>
(3)useThrottleFn(節(jié)流,控制方法觸發(fā)頻率)
高頻場景:滾動(dòng)加載、resize事件,控制方法每隔固定時(shí)間只能觸發(fā)一次,區(qū)別于防抖(停止輸入才觸發(fā))。
<script setup>
import { useThrottleFn } from '@vueuse/core'
// 節(jié)流方法:每隔1000ms只能觸發(fā)一次
const handleScroll = useThrottleFn(() => {
console.log('滾動(dòng)事件觸發(fā)(節(jié)流):', window.scrollY)
}, 1000)
// 監(jiān)聽滾動(dòng)事件
window.addEventListener('scroll', handleScroll)
// 組件卸載時(shí)移除監(jiān)聽(避免內(nèi)存泄漏)
onUnmounted(() => {
window.removeEventListener('scroll', handleScroll)
})
</script>
(4)useWindowSize(監(jiān)聽窗口大小,適配響應(yīng)式)
高頻場景:響應(yīng)式布局、適配移動(dòng)端/PC端,自動(dòng)監(jiān)聽窗口寬高變化,無需手動(dòng)寫resize事件。
<script setup>
import { useWindowSize } from '@vueuse/core'
// 自動(dòng)監(jiān)聽窗口寬高,響應(yīng)式變化
const { width, height } = useWindowSize()
// 可直接判斷設(shè)備類型(比如移動(dòng)端寬小于768px)
const isMobile = computed(() => {
return width.value < 768
})
</script>
<template>
<div>
<p>窗口寬度:{{ width }}px</p>
<p>窗口高度:{{ height }}px</p>
<p v-if="isMobile">當(dāng)前為移動(dòng)端布局</p>
<p v-else>當(dāng)前為PC端布局</p>
</div>
</template>
3. 核心避坑
?? 避坑1:VueUse 支持按需引入,不要全局引入所有工具(會(huì)增加項(xiàng)目體積),用什么引什么。
?? 避坑2:useLocalStorage 存儲(chǔ)復(fù)雜數(shù)據(jù)(對(duì)象/數(shù)組)時(shí),無需手動(dòng)序列化,直接賦值即可。
?? 避坑3:監(jiān)聽類工具(如useWindowSize、useScroll),組件卸載時(shí)無需手動(dòng)清除,VueUse會(huì)自動(dòng)清理,避免內(nèi)存泄漏。
二、vue-i18n(搜索量TOP2,國際化必備插件)
vue-i18n 是Vue3官方推薦的國際化插件,搜索量常年穩(wěn)居前列,高頻用于多語言項(xiàng)目(中/英/日等),支持文本翻譯、日期/數(shù)字格式化,配置簡單,切換語言無刷新,企業(yè)級(jí)項(xiàng)目必用。
1. 安裝vue-i18n
# npm安裝(推薦) npm install vue-i18n@9 # yarn安裝 yarn add vue-i18n@9
?? 注意:Vue3 必須安裝 vue-i18n@9+ 版本,低版本不兼容。
2. 全局配置(3步搞定,一次配置全局可用)
步驟1:創(chuàng)建多語言文件(src/lang目錄)
在src目錄下新建lang文件夾,創(chuàng)建中文(zh-CN.js)、英文(en-US.js)兩個(gè)語言文件(可擴(kuò)展其他語言):
// src/lang/zh-CN.js(中文)
export default {
home: '首頁',
about: '關(guān)于我們',
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'
// 創(chuàng)建i18n實(shí)例
const i18n = createI18n({
legacy: false, // 必須設(shè)為false,適配Vue3的<script setup>語法糖
locale: 'zh-CN', // 默認(rèn)語言(中文)
fallbackLocale: 'en-US', // 備用語言(當(dāng)默認(rèn)語言沒有對(duì)應(yīng)翻譯時(shí),使用英文)
messages: {
'zh-CN': zhCN, // 中文語言包
'en-US': enUS // 英文語言包
}
})
export default i18n
步驟3:全局注冊(cè)(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) // 全局注冊(cè)i18n
app.mount('#app')
3. 組件內(nèi)使用(極簡示例,翻譯+切換語言)
<script setup>
// 引入useI18n,獲取翻譯方法和語言切換方法
import { useI18n } from 'vue-i18n'
// 解構(gòu)t(翻譯方法)、locale(當(dāng)前語言)、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:必須設(shè)置 legacy: false,否則
?? 避坑2:翻譯關(guān)鍵詞(如home、username)必須和語言文件中的關(guān)鍵詞完全一致,否則無法顯示翻譯。
?? 避坑3:切換語言后,頁面會(huì)自動(dòng)刷新翻譯內(nèi)容,無需手動(dòng)刷新頁面,復(fù)雜數(shù)據(jù)也會(huì)自動(dòng)適配。
三、Vant 4(搜索量TOP3,移動(dòng)端UI組件庫)
Vant 4 是Vue3生態(tài)最火的移動(dòng)端UI組件庫,搜索量穩(wěn)居移動(dòng)端UI榜首,由有贊團(tuán)隊(duì)開發(fā),封裝了60+移動(dòng)端常用組件(按鈕、表單、彈窗、輪播、導(dǎo)航等),適配各種移動(dòng)端設(shè)備,樣式美觀、可自定義,快速搭建移動(dòng)端頁面,企業(yè)級(jí)移動(dòng)端項(xiàng)目首選。
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) // 全局注冊(cè)Vant,所有組件可直接使用
app.mount('#app')
進(jìn)階:按需引入(精簡體積),新手可先全局引入,后期優(yōu)化時(shí)再改為按需引入。
3. 組件內(nèi)使用(3個(gè)高頻組件,移動(dòng)端必備)
精選移動(dòng)端開發(fā)最常用的3個(gè)組件,示例可直接復(fù)制,適配各種移動(dòng)端場景:
(1)Button(按鈕組件,移動(dòng)端高頻)
<template>
<div class="button-demo">
<!-- 基礎(chǔ)按鈕 -->
<van-button>默認(rèn)按鈕</van-button>
<!-- 不同類型按鈕(主色/成功/危險(xiǎn)) -->
<van-button type="primary">主色按鈕</van-button>
<van-button type="success">成功按鈕</van-button>
<van-button type="danger">危險(xiǎn)按鈕</van-button>
<!-- 禁用狀態(tài)/加載狀態(tài) -->
<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>
<!-- 輪播組件(自動(dòng)播放、指示器、點(diǎn)擊切換) -->
<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; /* 移動(dòng)端輪播圖常用高度 */
}
.swipe-img {
width: 100%;
height: 100%;
object-fit: cover; /* 圖片自適應(yīng),不拉伸 */
}
</style>
(3)Form(表單組件,登錄/注冊(cè)必備)
<script setup>
import { ref } from 'vue'
import { useToast } from 'vant' // 引入Vant的提示組件(配合表單校驗(yàn))
const toast = useToast()
// 表單數(shù)據(jù)
const form = ref({
username: '',
password: ''
})
// 表單校驗(yàn)+提交
const handleSubmit = () => {
if (!form.value.username) {
toast('請(qǐng)輸入用戶名')
return
}
if (!form.value.password) {
toast('請(qǐng)輸入密碼')
return
}
// 校驗(yàn)通過,提交表單(模擬登錄接口)
console.log('表單提交:', form.value)
toast.success('登錄成功')
}
</script>
<template>
<div class="form-demo">
<van-form @submit="handleSubmit">
<van-field
v-model="form.username"
label="用戶名"
placeholder="請(qǐng)輸入用戶名"
required
/>
<van-field
v-model="form.password"
label="密碼"
type="password"
placeholder="請(qǐng)輸入密碼"
required
/>
<van-button type="primary" block native-type="submit">登錄</van-button>
</van-form>
</div>
</template>
4. 核心避坑
?? 避坑1:Vant 4 僅適配Vue3,Vue2項(xiàng)目需使用Vant 2版本,不要裝錯(cuò)版本。
?? 避坑2:移動(dòng)端組件需配合viewport配置(public/index.html),否則樣式錯(cuò)亂。
?? 避坑3:表單組件的native-type="submit"不要遺漏,否則表單提交事件無法觸發(fā)。
<!-- public/index.html 必須添加viewport配置(移動(dòng)端適配) --> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
四、插件總結(jié)(重點(diǎn)提煉,快速記憶)
? VueUse:萬能工具集,搜索量TOP1,防抖節(jié)流、本地存儲(chǔ)等100+工具,引入即用,不用造輪子。
? vue-i18n:國際化必備,搜索量TOP2,多語言切換無刷新,配置簡單,企業(yè)級(jí)項(xiàng)目必用。
? Vant 4:移動(dòng)端UI首選,搜索量TOP3,組件豐富、樣式美觀,快速搭建移動(dòng)端頁面。
?? 小技巧:這3款插件覆蓋Vue3項(xiàng)目90%的高頻場景,示例可直接復(fù)制到項(xiàng)目中使用,無需復(fù)雜修改;后續(xù)開發(fā)遇到工具、多語言、移動(dòng)端相關(guān)需求,直接查這篇即可!
總結(jié)
到此這篇關(guān)于Vue3三款爆款實(shí)用插件教程的文章就介紹到這了,更多相關(guān)Vue3爆款實(shí)用插件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue 實(shí)現(xiàn)移動(dòng)端鍵盤搜索事件監(jiān)聽
今天小編就為大家分享一篇vue 實(shí)現(xiàn)移動(dòng)端鍵盤搜索事件監(jiān)聽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue3+Hooks實(shí)現(xiàn)4位隨機(jī)數(shù)和60秒倒計(jì)時(shí)的示例代碼
Vue3的Hooks是一種新的 API,本文主要介紹了Vue3+Hooks實(shí)現(xiàn)4位隨機(jī)數(shù)和60秒倒計(jì)時(shí)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
Vue-input框checkbox強(qiáng)制刷新問題
這篇文章主要介紹了Vue-input框checkbox強(qiáng)制刷新問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
Vue API中setup ref reactive函數(shù)使用教程
setup是用來寫組合式api,內(nèi)部的數(shù)據(jù)和方法需要通過return之后,模板才能使用。在之前vue2中,data返回的數(shù)據(jù),可以直接進(jìn)行雙向綁定使用,如果我們把setup中數(shù)據(jù)類型直接雙向綁定,發(fā)現(xiàn)變量并不能實(shí)時(shí)響應(yīng)。接下來就詳細(xì)看看它們的使用2022-12-12
Vue實(shí)現(xiàn)下載文件而非瀏覽器直接打開的方法
對(duì)于瀏覽器來說,文本、圖片等可以直接打開的文件,不會(huì)進(jìn)行自動(dòng)下載,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)下載文件而非瀏覽器直接打開的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05

