当前位置: 首页 > article >正文

vue项目中如何在路由变化时增加一个进度条

在 Vue.js 项目中,使用路由(如 Vue Router)时,为了提升用户体验,你可能会想要在路由变化时显示一个进度条。这可以通过多种方式实现,其中一种流行的做法是使用第三方库,如 vue-loading-barnprogress。这里我将介绍如何使用 nprogress 来实现这一功能。

安装 nprogress

首先,你需要安装 nprogress 包:

npm install nprogress --save

引入 nprogress

在你的主文件(通常是 main.jsmain.ts)中引入 nprogress 并设置全局样式:

import Vue from 'vue';
import router from './router'; // 引入你的路由配置
import NProgress from 'nprogress'; // 引入 nprogress
import 'nprogress/nprogress.css'; // 引入 nprogress 的 CSS 文件

// 初始化 NProgress
NProgress.configure({ showSpinner: false }); // 配置 NProgress 的选项

// 使用 Vue Router 的 beforeEach 导航守卫
router.beforeEach((to, from, next) => {
  NProgress.start(); // 开始进度条
  next();
});

// 使用 afterEach 导航守卫
router.afterEach(() => {
  NProgress.done(); // 结束进度条
});

new Vue({
  router,
}).$mount('#app');

解释代码

  • beforeEach 导航守卫:在每次导航开始之前启动进度条。
  • afterEach 导航守卫:在每次导航完成后结束进度条。

这样设置后,每次路由变化时,进度条就会自动显示出来,并在页面加载完成后消失。

自定义进度条样式

如果你希望自定义进度条的样式,可以修改 nprogress/nprogress.css 文件中的样式规则,或者覆盖这些样式以适应你的项目需求。

使用 Vue Loading Bar

如果你更倾向于使用 Vue Loading Bar,安装步骤如下:

npm install vue-loading-bar --save

然后在你的 main.jsmain.ts 中引入并使用它:

import Vue from 'vue';
import LoadingBar from 'vue-loading-bar';
import 'vue-loading-bar/dist/vue-loading-bar.min.css';

Vue.use(LoadingBar);

const router = require('./router').default; // 引入你的路由配置

// 使用 Vue Router 的 beforeEach 导航守卫
router.beforeEach((to, from, next) => {
  LoadingBar.start(); // 开始进度条
  next();
});

// 使用 afterEach 导航守卫
router.afterEach(() => {
  LoadingBar.finish(); // 结束进度条
});

new Vue({
  router,
}).$mount('#app');

在这里插入图片描述


http://www.kler.cn/a/374593.html

相关文章:

  • 【Unity开发】低版本HDRenderPipeline升级到HDRP14.x版本问题笔记
  • springboot 配置跨域访问
  • 深度分析java 使用 proguard 如何解析混淆后的堆栈
  • 【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现
  • Java全栈项目 - 学生竞赛管理平台
  • Java爬虫技术:按关键字搜索VIP商品详情
  • 基于SSM+小程序的宿舍管理系统(宿舍1)
  • 深度学习基础—循环神经网络(RNN)
  • spring中bean的四种创建方式
  • 单向数据流在 React 中的作用
  • docker engine stopped
  • 【力扣 + 牛客 | SQL题 | 每日5题】牛客SQL热题204,201,215
  • 医疗器械设备语音ic芯片方案-选型大全
  • 基于vue、VantUI、django的程序设计
  • nodejs包管理器pnpm
  • 二十七、Python基础语法(面向对象-上)
  • OLAP与OLTP:数据处理系统的两种核心架构
  • Redis-发布/订阅交互模式
  • vue简介
  • 组织如何防御日益增加的 API 攻击面
  • 如何使用java雪花算法在分布式环境中生成唯一ID?
  • 机器学习——自动化机器学习(AutoML)
  • 网络自动化01:netmiko基础、netmiko简单demo
  • 计算机毕业设计——ssm基于java智能选课系统的设计与实现演示录像2021
  • Java学习路线:MyBatis(七)使用注解开发
  • 【云原生】云原生后端:案例研究与最佳实践