Hi~,我是 一碗周,一个在舒适区垂死挣扎的前端,如果写的文章有幸可以得到你的青睐,万分有幸~
🍏 写在前面
NProgress是一个轻量级的进度条组件,在Github上已经2.4万star数了,虽然这个组件已经好久没有更新了,最近一次更新是20年4月份,改了jQuery的版本,但是该组件的使用频率还是高的。
🍑 在项目中安装
这里的包管理工具使用的npm,如果你使用的是yarn或者pnpm,请自行更改安装命令,安装命令如下:
npm i nprogress -S
因为我们是TS的项目,还需要安装其类型声明文件,命令如下:
npm i @types/nprogress -D
🍒 简单的封装
现在我们对NProgress进行一下简单的封装,首先我们在utils
目录下创建要给nporgress.ts
的文件,然后引入NProgress和CSS样式文件,示例代码如下:
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
然后我们对进度条进行一些基础配置,示例代码如下:
//全局进度条的配置
NProgress.configure({
easing: 'ease', // 动画方式
speed: 1000, // 递增进度条的速度
showSpinner: false, // 是否显示加载ico
trickleSpeed: 200, // 自动递增间隔
minimum: 0.3, // 更改启动时使用的最小百分比
parent: 'body', //指定进度条的父容器
})
最后我们封装两个方法,一个是开始方法,一个是结束的方法,示例代码如下:
// 打开进度条
export const start = () => {
NProgress.start()
}
// 关闭进度条
export const close = () => {
NProgress.done()
}
🍓 在Vue切换路由时展示进度条
现在我们就来使用我们上面封装的Nprogress,这里我们在VueRouter的配置文件中使用,实现切换路由时在顶部展示进度条,首先我们打开VueRouter的配置文件,然后引入我们封装的Nprogress:
// router/index.ts
import { close, start } from '/@/utils/nprogress'
然后我们在创建的Router实例中使用这两个方法:
const router = createRouter({
routes,
history: createWebHistory(),
})
router.beforeEach((pre, next) => {
start()
})
router.afterEach(() => {
close()
})
beforeEach
:路由切换之前触发;afterEach
:路由切换完成后触发;
现在我们切换路由就可以实现顶部进度条的切换。
{完}