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 相关文章推荐
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
node.js Web应用框架Express入门指南
May 28 Javascript
JS实现的颜色实时渐变效果完整实例
Mar 25 Javascript
浅析ES6的八进制与二进制整数字面量
Aug 30 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
Nov 17 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
Feb 10 Javascript
微信小程序 五星评价功能的实现
Mar 09 Javascript
React Navigation 使用中遇到的问题小结
May 08 Javascript
js操作table中tr的顺序实现上移下移一行的效果
Nov 22 Javascript
tsconfig.json配置详解
May 17 Javascript
JavaScript实现星级评价效果
May 17 Javascript
浅谈layui里的上传控件问题
Sep 26 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删除数组中的特定元素的代码
2012/06/28 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
linux下php上传文件注意事项
2016/06/11 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
PHP多进程编程实例详解
2017/07/19 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
Django返回json数据用法示例
2016/09/18 Python
python-str,list,set间的转换实例
2018/06/27 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
python操作yaml说明
2020/04/08 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
个人应聘自我评价分享
2013/11/18 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
社区灵活就业证明
2014/11/03 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript