我是靠谱客的博主 隐形戒指,这篇文章主要介绍Vue中nprogress页面加载进度条的方法实现,现在分享给大家,希望可以做个参考。

nprogress页面加载进度条

前言

很多时候在访问网页的时候我们总是看到页面在加载中,可以却不知道要加载多久,无期限的等待总是让人烦躁不安,所以我们希望能知道网页加载的进度,这样我们就能做到心中有数是否继续等待页面加载。这个功能我们可以依靠nprogress来实现,它是轻量级的进度条组件,使用简便,可以很方便集成到应用中来。

安装nprogress

直接在项目中执行安装命令:npm install --save nprogress

nprogress方法

复制代码
1
2
3
4
5
NProgress.start() // 进度条开始 NProgress.set() // 将进度设置到具体的百分比位置,取值范围是0到1.0 NProgress.inc() // 如果少量增加进度,进度将永远不会得到100% NProgress.done() // 进度条结束消失 NProgress.configure() // 进度条参数配置

全局引入nprogress

在main.js中引入nprogress插件和样式,

复制代码
1
2
import NProgress from ‘nprogress' // nprogress插件 import ‘nprogress/nprogress.css' // nprogress样式

配置nprogress

在NProgress.configure({})中我们可以对nprogress进行适当的配置,showSpinner 为 false(禁用进度环)、trickle 为 false(关闭进度条步进)、trickleRate (每次步进增长多少)、trickleSpeed (步进间隔,单位毫秒ms)、ease(动画方向)、speed (动画速度,单位毫秒ms)、minimum (最小百分比)等等。

复制代码
1
NProgress.configure({ showSpinner: false }) //我这里只关闭进度环

Vuerouter路由钩子

在添加nprogress之前我们需要先了解VuerouterbeforeEachafterEach钩子函数,这是在路由跳转的时候对路由进行一些权限判断或者其他操作时定义的处理函数,Vue.beforeEach是在跳转之前执行,Vue.afterEach是在跳转之后执行判断的。

Vue.beforeEach(function(to,form,next){})函数有三个参数,Vue.afterEach(function(to,form))函数有两个参数:

to:即将进入的路由对象

from:当前导航即将离开的路由对象

next:调用该方法,进入下一个钩子函数,next(false):则中断当前的导航。

在路由中添加nprogress

在main.js中全局钩子函数,在路由跳转前用NProgress.start()标记下进度条开始,在路由跳转后用NProgress.done()标记下结束,这样在路由跳转的时候就可以在页面顶部看到一个progress bar进度条了

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import Vue from 'vue' import App from './App.vue' import router from '@/router/index.js' import store from './store' import Element from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import '@/assets/icons/index.js' import NProgress from 'nprogress' import 'nprogress/nprogress.css' Vue.use(Element) Vue.config.productionTip = false NProgress.configure({ showSpinner: false }) router.beforeEach((to, from, next) => { NProgress.start() next() }) router.afterEach(() => { NProgress.done() }) new Vue({ router, store, render: h => h(App) }).$mount('#app')

在请求中添加nprogress

如果你希望每次发送请求的时候也出现进度条的话可以在axios封装中的路由拦截中添加nprogress

复制代码
1
2
3
4
5
6
7
8
// 请求拦截器(请求发出前处理一些请求) axios.interceptors.request.use( NProgress.start() }) // 响应拦截器(处理响应数据) axios.interceptors.response.use( NProgress.done() )

为了让结构更滑清晰简洁些,我们重新整理下代码,即然nprogress主要是用在路由跳转上,这里我将nprogress归纳放入router中,切记实例化router之后调用Vuerouter的beforeEach与afterEach钩子函数生效。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import Vue from 'vue' import Router from 'vue-router' import routers from './routers' import NProgress from 'nprogress' import 'nprogress/nprogress.css' NProgress.configure({ showSpinner: false }) Vue.use(Router) const router = new Router({ mode: 'history', routes: routers }) export default router router.beforeEach((to, from, next) => { NProgress.start() next() }) router.afterEach(() => { NProgress.done() })

修改nprogress样式

在app.vue中添加如下样式即可修改nprogress样式,记得添加 !important来覆盖原有样式

复制代码
1
2
3
4
#nprogress .bar { background: #66B1FF !important; // 自定义颜色 height: 20px !important; // 自定义高度 }

参考 https://www.toutiao.com/i6718992880599302659/?group_id=6718992880599302659

到此这篇关于Vue中nprogress页面加载进度条的方法实现的文章就介绍到这了,更多相关Vue nprogress加载进度条内容请搜索靠谱客以前的文章或继续浏览下面的相关文章希望大家以后多多支持靠谱客!

最后

以上就是隐形戒指最近收集整理的关于Vue中nprogress页面加载进度条的方法实现的全部内容,更多相关Vue中nprogress页面加载进度条内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(140)

评论列表共有 0 条评论

立即
投稿
返回
顶部