Vue中nprogress页面加载进度条的方法实现


Posted in Javascript onNovember 13, 2020

nprogress页面加载进度条

前言

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

Vue中nprogress页面加载进度条的方法实现

安装nprogress

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

Vue中nprogress页面加载进度条的方法实现

nprogress方法

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

全局引入nprogress

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

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 (最小百分比)等等。

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进度条了

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

// 请求拦截器(请求发出前处理一些请求)
axios.interceptors.request.use( 
 NProgress.start()
})
// 响应拦截器(处理响应数据)
axios.interceptors.response.use(
 NProgress.done()
)

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

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来覆盖原有样式

#nprogress .bar {
 background: #66B1FF !important; // 自定义颜色
 height: 20px !important; // 自定义高度
 }

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

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

Javascript 相关文章推荐
JavaScript静态类型检查工具FLOW简介
Jan 06 Javascript
jQuery常用数据处理方法小结
Feb 20 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
Apr 22 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
jquery判断iPhone、Android设备类型
Sep 14 Javascript
利用JS做网页特效_大图轮播(实例讲解)
Aug 09 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
Aug 16 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
详解React服务端渲染从入门到精通
Mar 28 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
Apr 19 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 #Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
Nov 12 #Javascript
解决vuex刷新数据消失问题
Nov 12 #Javascript
微信小程序对图片进行canvas压缩的方法示例详解
Nov 12 #Javascript
解决vuex改变了state的值,但是页面没有更新的问题
Nov 12 #Javascript
javascript实现搜索筛选功能实例代码
Nov 12 #Javascript
vue实现两个组件之间数据共享和修改操作
Nov 12 #Javascript
You might like
重置版游戏视频
2020/04/09 魔兽争霸
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
美国现代家具购物网站:LexMod
2019/01/09 全球购物
通用求职信范文模板分享
2013/12/27 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
2014年终工作总结范本
2014/12/15 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
公司员工离职感言
2015/08/03 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
Django操作cookie的实现
2021/05/26 Python