Vue 项目中使用路由鉴权实现网页进度条

server/2024/11/15 6:42:08/

概述

在 Web 开发中,用户界面的流畅性和交互性对用户体验至关重要。为了在页面跳转时给用户提供反馈,我们可以利用 NProgress 这样的第三方库来实现一个进度条。本文档将指导您如何在 Vue 项目中结合路由鉴权来实现这一功能。

准备工作

确保您已经安装了以下依赖项:

  • Node.js 和 npm
  • Vue CLI
  • Vue Router
  • NProgress

步骤一:安装依赖

首先,在您的 Vue 项目中安装 vue-routernprogress

npm install vue-router
npm i nprogress

步骤二:配置路由

在您的项目中设置 Vue Router,并配置基本的路由规则。

1. 创建 src/router/index.js

这里就是正常配置就ok了

2.创建 permission.ts

与main.ts同级

javascript">//路由鉴权,项目当中路由能不能被权限的设置(某一个路由什么条件下可以访问,什么条件下不可以访问)
import router from '@/router'
import nprogress from 'nprogress'
//引入进度条的样式
import 'nprogress/nprogress.css'
//全局守卫:项目当中任意路由都会触发的钩子
//全局前置守卫
router.beforeEach((to, from, next) => {// to:你将要访问那个路由// from:你从哪个路由来// next:放行函数,放行到哪一个路由console.log(11111);nprogress.start();next();
})
//全局后置守卫
router.afterEach((to, from) => {nprogress.done();
})

逐步解析

  1. 引入 NProgress

    • import nprogress from 'nprogress';:导入 NProgress 库。
    • import 'nprogress/nprogress.css';:导入 NProgress 的 CSS 样式文件,用于渲染进度条的外观。
  2. 注册路由守卫

    • router.beforeEach:全局前置守卫,在路由跳转前执行。
    • router.afterEach:全局后置守卫,在路由跳转完成后执行。
  3. 全局前置守卫

    • router.beforeEach((to, from, next) => { ... }):每当路由即将改变时,这个函数会被调用。
    • to:即将进入的目标路由。
    • from:当前离开的源路由。
    • next:一个回调函数,用于决定是否允许路由的跳转。
    • nprogress.start();:启动 NProgress 进度条。
    • next();:放行路由,允许路由跳转继续进行。
  4. 全局后置守卫

    • router.afterEach((to, from) => { ... }):每当路由跳转完成时,这个函数会被调用。
    • to:跳转后的目标路由。
    • from:跳转前的源路由。

进度条的工作流程

  1. 启动进度条

    • 当路由即将改变时(即 beforeEach 守卫被触发时),调用 nprogress.start() 启动进度条。
    • 这意味着进度条会在页面开始加载新内容时立即显示。
  2. 结束进度条

    • 当路由跳转完成后(即 afterEach 守卫被触发时),调用 nprogress.done() 结束进度条。
    • 这意味着进度条会在页面完成加载新内容后立即消失。

整体流程

  1. 用户点击链接或进行路由跳转。
  2. beforeEach 守卫被触发。
  3. 启动 NProgress 进度条。
  4. 放行路由,允许跳转继续。
  5. 路由跳转完成后,afterEach 守卫被触发。
  6. 结束 NProgress 进度条。

http://www.ppmy.cn/server/109861.html

相关文章

【大模型系列篇】词向量 - 从Word2Vec到ELMo

🔥🔥🔥首先安利一个比较不错的忍不住就想一键三连的大模型科普: 大模型科普专栏 - AI老兵文哲(哔哩哔哩) 词向量(又叫词嵌入)已经成为NLP领域各种任务的必备一步,而且随着BERT、GPT等…

HTTP分析

1.WebServer: 通过HTTP协议和客户端进行通信,接收,存储,处理HTTP请求,并且做出相应,给出图片,网页,视频,或者error。 2.怎么通信: IP端口号,要…

在VBA中,对Excel单元格的操作方法 (qo+op)

一、读取单元格内容 读取单元格的内容,将单元格的值赋给一个变量。例如,读取A1单元格的内容并打印到窗口。 Sub Cell() Dim cellContent As String cellContent Worksheets("Sheet1").Range("A1").Value Debug.Print cellContent …

一文彻底搞懂大模型 - GPT和LlaMA的模型架构

GPT vs LlaMA GPT与LlaMA,作为大语言模型的两大巨擘,均基于Transformer架构却各有千秋。GPT系列以强大的生成能力著称,通过不断增大的参数规模引领复杂语言与推理任务的前沿;而Llama则以开源姿态,通过技术创新提升模型…

恒电流间歇滴定法 (GITT) 测试教程

文章目录 恒电流间歇滴定法 (GITT) 测试教程1. GITT 测试原理2. 实验准备2.1 设备与材料2.2 配置实验装置 3. GITT 测试步骤3.1 设定测试参数3.2 执行 GITT 测试 4. 数据分析4.1 电压变化分析4.2 扩散系数计算4.3 电荷传输阻抗分析 5. 总结与应用 恒电流间歇滴定法 (GITT) 测试…

虚幻地形高度图生成及测试

虚幻地形高度图生成及测试 虚幻引擎地形系统将高度数据存储在高度图中,这是一个灰阶图像,使用黑白色值来存储地貌高程。在高度图中,纯黑色值表示最低点,纯白色值表示最高点。支持16位灰阶PNG、8位灰阶r8及16位灰阶r16格式。 本文…

flutter之image_picker上传图片

原文地址 image_picker 安装 image_picker: ^1.1.2使用 我们获取到上传的照片后,将其转为base64编码的格式,方便后续使用 // source: 接收两种模式,相册和拍照final pickedImage =await

【算法】前缀和例题讲解

例一&#xff1a; 724. 寻找数组的中心下标 思路&#xff1a; 典型的前缀和题目&#xff0c;我们只需要创建前缀和数组和后缀和数组&#xff0c;然后一一寻找两者相等的下标即可。 代码&#xff1a; class Solution { public:int pivotIndex(vector<int>& nums) …