尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

NProgress 给 Vue 路由切换加个 “假” 进度条提升用户体验

NProgress 给 Vue 路由切换加个 “假” 进度条提升用户体验
📅 发布时间:2026/6/20 3:46:39

NProgress 给 Vue 路由切换加个 “假” 进度条提升用户体验

Posted on 2025-11-10 15:38  且行且思  阅读(0)  评论(0)    收藏  举报

虽然进度条是假的,但提升用户体验是真的!!

毕竟如果网页长时间白屏,用户可能会咔嚓一下就关了浏览器,但如果有个进度条在跑,至少说明网页有小动作在进行中…

有研究表明,网页白屏超过 3 秒就可能导致用户流失。

NProgress 超级简单,核心方法就三四个,但人家实用性高啊,周下载量百万以上,足以说明一切了。

NProgress

根据作者说法,其灵感来源于 Google, YouTube, Medium 这些超级大佬,最开始的应用场景是给 Ajax 请求添加进度条,比如 jQuery 时代的 pjax。

pjax 原理:利用 Ajax 发起异步请求获取新页面 HTML,并替换当前内容,再使用 pushState 改变 URL,其原理跟当前的单页应用路由差不多,可以算最古老的前端路由应用场景了。

有兴趣的可以看下:https://github.com/defunkt/jquery-pjax

NProgress 能用在 Ajax 请求,那也能用于单页应用的路由切换,尤其是 Vite 这种现代打包工具,编译出来的 JS 文件都使用 ES6 的模块化语法,在每次路由切换时才会去加载所需的 JS 文件,这一步如果网络不好,页面给人的感觉就是卡住了,难受!

项目仓库:https://github.com/rstacruz/nprogress
npm 包:https://www.npmjs.com/package/nprogress
英文文档:https://github.com/rstacruz/nprogress
star 数量: 26.4k (26380)
开源协议: MIT
npm 周下载量: 160 万左右
最新版本: 0.2.0
兼容浏览器: Edge/Chrome/Firefox/Safari
文件大小: 约 4.1 kB (Gzip 1.7 kB)
更新状态: 五年前

使用示例

1、npm 安装

1npm install --save nprogress

说实话,这小东西这么点儿大,真没必要用 npm 安装,直接用 script 引入即可。

将文件下载保存到 Vue 项目下的 public/lib/nprogress/ 目录下,然后在 index.html 中引入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<head>  <!-- ....其他 head 内容 -->  <link rel="stylesheet" href="/lib/nprogress/nprogress.min.css" />  <script src="/lib/nprogress/nprogress.min.js"></script>  <script>    try {
      // 配置项
      window.NProgress.configure({
        // 不要显示小圈圈
        showSpinner: false,
        // 递增频率 100 毫秒
        trickleSpeed: 100      })
    } catch (e) {}
  </script>
  <!-- ....其他 head 内容 --></head>

放在 public 目录下有个好处,不用每次打包编译,文件内容也不会发生改变,还可以命中 nginx 的文件缓存,提升访问速度。

2、使用

在创建路由的地方,使用路由钩子触发进度条的显示与隐藏,比如 router.ts 中:

1
2
3
4
5
6
7
8
9
10
11
12
13router.beforeEach(async (to, from) => {
  try {
    ;(window as any)?.NProgress?.start()
  } catch (error) {
  }
})

router.afterEach(() => {
  try {
    ;(window as any)?.NProgress?.done()
  } catch (error) {
  }
})

为什么要用 try...catch ?毕竟是三方方法,如果报错,也别影响正常的项目运行撒!

3、效果

如果不加进度条,网速慢的情况下会是这样:

图片

初次文件没缓存情况下,点了路由链接之后,卡了大约 2秒左右,看起来没任何响应。再看加上进度条的效果:

图片

注意顶部那个一闪而过的蓝色线条,就是 NProgress 的进度条样式。有没有体验好一点?

注意:小东西要改变颜色只能去修改 nprogress.min.css 文件,没有配置项,毕竟人家的 CSS 和 JS 是分离开来的,默认色值 #29d 直接搜索替换就行。

4、完整的配置声明

图片

最后

眼光放开来,NProgress 可不仅仅用于路由切换,与后端的接口交互也能用上,不过个人觉得增删改查的交互接口请求还是用局部的 菊花图 体验更好。

相关新闻

  • 数组的定义、访问、输出
  • 2025年沼气直燃品牌排名前十:徐州海德测控领跑行业创新
  • 2025年11月安徽省矿用设备安全检测检验企业口碑榜

最新新闻

  • 麻省理工研究人员打造 Fractal 操作系统,获苹果 M1 芯片新发现
  • React写的WebVR全景看房跳转demo,带贝壳式热点导航和视角控制
  • 2026年郑州脚手架搭建公司推荐:钢管脚手架/盘口脚手架搭建拆除、室内外装修架子搭设、脚手架租赁施工怎么选 - 海棠依旧大
  • 从PHP一句话木马到Webshell大马:攻防原理与实战防御指南
  • BepInEx IL2CPP启动失败:技术原理与完整解决方案指南
  • Elastic 被评为 IDC MarketScape《2026 年全球 SIEM 厂商评估》领导者

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号