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实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
将json对象转换为字符串的方法
Feb 20 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
JS实现文档加载完成后执行代码
Jul 09 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
Aug 07 Javascript
JS关闭窗口时产生的事件及用法示例
Aug 20 Javascript
js+div+css下拉导航菜单完整代码分享
Dec 28 Javascript
jQuery中map函数的两种方式
Apr 07 jQuery
详解vue-cli+es6引入es5写的js(两种方法)
Apr 19 Javascript
Vue.js实现立体计算器
Feb 22 Javascript
JS+canvas五子棋人机对战实现步骤详解
Jun 04 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 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
PHP 身份证号验证函数
2009/05/07 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
用js怎么把&字符换成"&amp:"
2006/10/19 Javascript
不懂JavaScript应该怎样学
2008/04/16 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
JQuery中getJSON的使用方法
2010/12/13 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
理解javascript正则表达式
2016/03/08 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
狼和鹿教学反思
2014/02/05 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
水利水电专业自荐信
2014/07/08 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
放牛班的春天观后感
2015/06/01 职场文书
蜗居观后感
2015/06/11 职场文书
小学班级管理心得体会
2016/01/07 职场文书
入党心得体会
2019/06/20 职场文书