本文介绍 Vue 进度条插件 NProgress 的用法
1. 安装
npm install --save nprogress
2. 引入
在 main.js 文件中引入以下内容
import NProgress from 'nprogress' // nprogress插件
import 'nprogress/nprogress.css' // nprogress样式
3. 显示声明 Vue 使用该插件
Vue.use(NProgress);
4. 对 NProgress 插件的相关参数进行设置
NProgress.configure({
easing: 'ease', // 动画方式
speed: 500, // 递增进度条的速度
showSpinner: false, // 是否显示加载ico
trickleSpeed: 200, // 自动递增间隔
minimum: 0.3 // 初始化时的最小百分比
});
5. 设置 NProgress 插件的加载效果何时显示
第一种显示方式:进入路由前显示进度条,进入路由后关闭进度条。这种方式的缺点是当网速太慢,页面中图片等资源还没有加载完成时,进度条已经关闭。
// 当路由进入前,启动进度条
router.beforeEach((to, from , next) => {
NProgress.start(); // 每次切换页面时,调用进度条
next();
});
// 当路由进入后:关闭进度条
router.afterEach(() => {
NProgress.done(); // 在即将进入新的页面组件前,关闭掉进度条
});
第二种显示方式:页面资源开始加载时显示进度条,页面所有资源加载完成后关闭进度条。这种方式解决了方式一中存在的问题,但当仅有路由跳转、没有待加载的资源时不显示进度条,因此两种方式配合使用效果更好。
Vue.http.interceptors.push((request, next) => {
NProgress.start();
next(() => {
NProgress.done();
});
});
6. 修改样式
记得使用 !important
来覆盖原有的样式
/**
* 修改进度条样式
*/
#nprogress .bar {
background: #fff !important;
height: 56px !important;
opacity: 0.5;
box-shadow: none;
}