詳解如何在Vue3+TS的項目中使用NProgress進度條
寫在前面
NProgress是一個輕量級的進度條組件,在Github上已經(jīng)2.4萬star數(shù)了,雖然這個組件已經(jīng)好久沒有更新了,最近一次更新是20年4月份,改了jQuery的版本,但是該組件的使用頻率還是高的。
?? 在項目中安裝
這里的包管理工具使用的npm,如果你使用的是yarn或者pnpm,請自行更改安裝命令,安裝命令如下:
npm i nprogress -S
因為我們是TS的項目,還需要安裝其類型聲明文件,命令如下:
npm i @types/nprogress -D
?? 簡單的封裝
現(xiàn)在我們對NProgress進行一下簡單的封裝,首先我們在utils目錄下創(chuàng)建要給nporgress.ts的文件,然后引入NProgress和CSS樣式文件,示例代碼如下:
import NProgress from 'nprogress' import 'nprogress/nprogress.css'
然后我們對進度條進行一些基礎(chǔ)配置,示例代碼如下:
//全局進度條的配置
NProgress.configure({
easing: 'ease', // 動畫方式
speed: 1000, // 遞增進度條的速度
showSpinner: false, // 是否顯示加載ico
trickleSpeed: 200, // 自動遞增間隔
minimum: 0.3, // 更改啟動時使用的最小百分比
parent: 'body', //指定進度條的父容器
})最后我們封裝兩個方法,一個是開始方法,一個是結(jié)束的方法,示例代碼如下:
// 打開進度條
export const start = () => {
NProgress.start()
}
// 關(guān)閉進度條
export const close = () => {
NProgress.done()
}?? 在Vue切換路由時展示進度條
現(xiàn)在我們就來使用我們上面封裝的Nprogress,這里我們在VueRouter的配置文件中使用,實現(xiàn)切換路由時在頂部展示進度條,首先我們打開VueRouter的配置文件,然后引入我們封裝的Nprogress:
// router/index.ts
import { close, start } from '/@/utils/nprogress'然后我們在創(chuàng)建的Router實例中使用這兩個方法:
const router = createRouter({
routes,
history: createWebHistory(),
})
router.beforeEach((pre, next) => {
start()
})
router.afterEach(() => {
close()
})beforeEach:路由切換之前觸發(fā);afterEach:路由切換完成后觸發(fā);
現(xiàn)在我們切換路由就可以實現(xiàn)頂部進度條的切換。
到此這篇關(guān)于詳解如何在Vue3+TS的項目中使用NProgress進度條的文章就介紹到這了,更多相關(guān)Vue3 NProgress進度條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue2中使用echarts實現(xiàn)中國地圖、在中國地圖上標注坐標散點圖的操作代碼
這篇文章主要介紹了vue2中使用echarts實現(xiàn)中國地圖、在中國地圖上標注坐標散點圖,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2024-05-05
Element-Plus之el-col與el-row快速布局
el-col是el-row的子元素,下面這篇文章主要給大家介紹了關(guān)于Element-Plus之el-col與el-row快速布局的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-09-09
基于vue與element實現(xiàn)創(chuàng)建試卷相關(guān)功能(實例代碼)
這篇文章主要介紹了基于vue與element實現(xiàn)創(chuàng)建試卷相關(guān)功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
使用axios請求接口,幾種content-type的區(qū)別詳解
今天小編就為大家分享一篇使用axios請求接口,幾種content-type的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10

