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

embedded/2024/11/10 12:12:35/

概述

在 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/embedded/102058.html

相关文章

Mysql的命令大全

一、数据库 1、创建数据库 create database 数据库名 charset utf8;2、查看数据库 show databases; select databse();3、删除数据库 drop databse 数据库名;4、使用数据库 use 数据库名;二、数据表 1、创建表 create table 表名(字段名 类型);2、查看表 show tables;3…

排序算法之快速排序详细解读(附带Java代码解读)

快速排序(Quick Sort)是一种高效的排序算法,由 C.A.R. Hoare 在 1960 年提出。它采用分治法的思想,将数组分为两部分,然后分别对这两部分进行排序,最终合并成一个有序数组。快速排序在大多数情况下表现优异…

鸿蒙后台运行,鸿蒙播放音乐后台

1、权限: 1.1、在entry > src > main > module.json5中配置: "requestPermissions": [{"name": "ohos.permission.KEEP_BACKGROUND_RUNNING"}], 1.2、在ability中配置backgroundModes(也是module.js…

C\C++ Sqlite3使用详解

C\C++ Sqlite3使用详解 一、源码下载二、sqlite3接口说明C++2.1 项目创建以及sqlite3使用2.1 连接数据库2.2 sqlite创建表2.2.1 示例代码2.2.2 注意事项2.3 sqlite插入数据2.3.1 示例代码2.3.2 注意事项2.4 sqlite数据删除2.5 sqlite数据查询一、源码下载 下载地址: https://…

大模型面试:LLM+向量库的文档对话系统

面试题 1.1 为什么大模型需要外挂(向量)知识库?如何将外部知识注入大模型,最直接的方法:利用外部知识对大模型进行微调 回答 大模型需要外挂(向量)知识库的原因: 知识更新频率:大模型在训练时使用的知识是静态的&a…

【大模型LLMs】文本分块Chunking调研LangChain实战

【大模型LLMs】文本分块Chunking调研&LangChain实战 Chunking策略类型1. 基于规则的文本分块2. 基于语义Embedding分块3. 基于端到端模型的分块4. 基于大模型的分块 Chunking工具使用(LangChain)1. 固定大小分块(字符&token&#xff…

Python--迭代器、生成器和装饰器

在 Python 中,迭代器和生成器是处理可迭代对象的两个核心概念,它们可以帮助我们高效地遍历数据。装饰器则是 Python 中的一种高级功能,用于修改函数或类的行为。接下来详细阐述并扩展这些概念。 1. 迭代器 迭代器的定义 迭代器是一个实现了…

react state 状态数据

props 和 state props 特点是只读,即修改不会让视图同步更新,想要更新必须再次调用 render() 渲染函数 state 特点是可读可写,在使用 this.setState({属性名: 属性值}) 修改时会同步更新视图state 创建和使用 state 必须在类组件的 construct…