Vue项目页面跳转时浏览器窗口上方显示进度条功能


Posted in Javascript onMarch 26, 2020

在vue项目中,为了减少首屏加载的时间,通常会开启路由的懒加载。路由懒加载配合gizp确实能帮助我们大大的加快首屏的加载时间。

然而,路由懒加载会使得我们在第一次打开一个新页面的时候,会有一个加载时间。如果在这个时候我们没有一个提示的话,给人的感觉会是好像我点了页面跳转但是没反应。所以,这个时候我们可以加一个进度条来告知用户。

具体实现,我们使用NProgress这个滚动条效果插件。

1.安装:

cnpm install --save nprogress

2.在main.js中引入:

import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'

3.在main.js中进行配置:

NProgress.configure({  
 easing: 'ease', // 动画方式 
 speed: 500, // 递增进度条的速度 
 showSpinner: false, // 是否显示加载ico 
 trickleSpeed: 200, // 自动递增间隔 
 minimum: 0.3 // 初始化时的最小百分比
})

4.在main.js中对路由钩子进行设置:

//当路由进入前
 router.beforeEach((to, from , next) => {
  // 每次切换页面时,调用进度条
 NProgress.start();
 // 若加载时间长且不定,担心进度条走完都没有加载完,可以调用

NProgress.inc();//这会以随机数量递增,且永远达不到100%,也可以设指定增量
 next();
 });
//当路由进入后:关闭进度条
router.afterEach(() => { 
 // 在即将进入新的页面组件前,关闭掉进度条
 NProgress.done()
})

补充:vue页面跳转方法

vue2.0在使用的过程中, .vue文件之间的跳转,需要在router里面配置path,通过路径跳转,html文件跳转如下:

<router-link to="/path"><button>跳转</button></router-link>

但是有时的需求是页面不直接跳转,有确认弹框或者其他事件,此时就需要在js中设置跳转,方法如下:

this.$ router.push({path: ‘/…'}); path为跳转路径,此方法会产生历史记录
this.$ router.push({name:'…'}) name也可以作为路由跳转
this.$ router.push({path:‘home',query:{obj:'…'}}) query:参数,可通过this.$ route.query.obj获取
this.$ router.push({path:‘home',params:{obj:'…'}}) query:参数,可通过this.$route.params.obj获取
this.$router.replace() 此方法不会产生历史记录
this.$router.go(n) 向前或向后跳转n个页面

总结

到此这篇关于Vue项目页面跳转时浏览器窗口上方显示进度条功能的文章就介绍到这了,更多相关vue 页面跳转进度条内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript事件模型代码
Jul 01 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
Nov 25 Javascript
jquery实现submit提交表单
Feb 03 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
May 28 Javascript
AngularJS辅助库browserTrigger用法示例
Nov 03 Javascript
javascript按顺序加载运行js方法
Dec 01 Javascript
javascript中的event loop事件循环详解
Dec 14 Javascript
小程序如何使用分包加载的实现方法
May 22 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 Javascript
js实现随机点名功能
Dec 23 Javascript
关于JavaScript轮播图的实现
Nov 20 Javascript
JavaScript定时器使用方法详解
Mar 26 #Javascript
js实现时钟定时器
Mar 26 #Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
Mar 26 #Javascript
原生JS实现留言板
Mar 26 #Javascript
vue在线动态切换主题色方案
Mar 26 #Javascript
javascript实现简单搜索功能
Mar 26 #Javascript
jQuery实现html可联动的百分比进度条
Mar 26 #jQuery
You might like
FCKeditor的安装(PHP)
2007/01/13 PHP
php中$this-&amp;gt;含义分析
2009/11/29 PHP
PHP笔记之:日期函数的使用介绍
2013/04/24 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
node内置调试方法总结
2018/02/22 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
Python查看多台服务器进程的脚本分享
2014/06/11 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
python将音频进行变速的操作方法
2020/04/08 Python
入党积极分子思想汇报范文
2014/01/05 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
群众路线个人整改措施
2014/10/24 职场文书
英语导游词
2015/02/13 职场文书
离婚案件被告代理词
2015/05/23 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL