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

深入理解 Vue Router:构建可靠的前端路由系统

目录

  • 01-什么是前端路由以及路由两种模式实现原理
  • 02-路由的基本搭建与嵌套路由模式
  • 03-动态路由模式与编程式路由模式
  • 04-命名路由与命名视图与路由元信息
  • 05-路由传递参数的多种方式及应用场景
  • 06-详解route对象与router对象
  • 07-路由守卫详解及应用场景

01-什么是前端路由以及路由两种模式实现原理

  • 前端路由是指在单页应用(SPA,Single Page Application)中,通过客户端的路由机制实现页面切换和导航的方式。它将不同的 URL 映射到相应的组件或页面,并通过页面切换而无需重新加载整个页面。
  • 前端路由的特点包括:
    1. 基于 URL:前端路由使用 URL 来标识不同的页面或视图状态。每个页面或视图状态都有一个对应的 URL,用户可以通过修改 URL 来导航到不同的页面或视图。

    2. 单页应用:前端路由通常用于单页应用。在单页应用中,所有的页面内容都加载一次,之后的页面切换只是替换了相应的组件或视图内容,而不需要重新加载整个页面,提供了更流畅的用户体验。

    3. 前端控制:前端路由是在客户端控制的。它通过 JavaScript 来监听 URL 的变化,并根据 URL 的不同来渲染相应的组件或视图内容,实现页面切换和导航。

    4. 动态加载:前端路由可以动态加载所需的组件或视图。当用户访问一个新页面时,路由系统会根据配置动态地加载对应的组件代码,从而避免了一次性加载所有页面内容带来的性能消耗。

    5. 无需刷新:前端路由通过动态地替换组件或视图内容来实现页面切换,从而避免了整个页面的刷新。这不仅提高了页面加载速度,还能保持用户在切换页面时的当前状态,提供更好的用户体验。

02-路由的基本搭建与嵌套路由模式

  • vue路由的搭建

    npm install vue-router
    
    • 配置路由信息,并且与Vue进行结合,让路由插件生效。在/src/router/index.js创建配置文件:
      在这里插入图片描述
  • vue路由的应用
    在这里插入图片描述

  • 嵌套路由模式
    在这里插入图片描述

03-动态路由模式与编程式路由模式

  • 动态路由模式
    • 所谓的动态路由其实就是不同的URL可以对应同一个页面,这种动态路由一般URL还是有规律可循的,所以非常适合做类似于详情页的功能。
      在这里插入图片描述
      在这里插入图片描述
  • 编程式路由
    • 在JavaScript中通过逻辑的方式进行路由跳转 在这里插入图片描述

04-命名路由与命名视图与路由元信息

  • 命名路由

    • 在路由跳转中,除了path 之外,你还可以为任何路由提供name的形式进行路由跳转:
      • 没有硬编码的 URL
      • params 的自动编码/解码
      • 防止你在 url 中出现打字错误
      • 绕过路径排序(如显示一个)
        在这里插入图片描述
  • 命名视图

    • 有时候想同时 (同级) 展示多个视图,而不是嵌套展示,这个时候就非常适合使用命名视图。
      在这里插入图片描述
  • 路由元信息

    • 有时,你可能希望将任意信息附加到路由上,如过渡名称、谁可以访问路由等。这些事情可以通过接收属性对象的meta属性来实现。
      在这里插入图片描述

05-路由传递参数的多种方式及应用场景

  • 路由的传递参数主要有以下三种方式:

    • query方式(显示) -> $route.query
    • params方式(显示) -> $route.params
    • params方式(隐式) -> $route.params
  • 两种显示传递数据的差异点主要为:

    • query是携带辅助信息
    • params是界面的差异化
      在这里插入图片描述
    • 注意:隐式发送过来的数据,只是临时性获取的,一旦刷新页面,隐藏的数据就会消失。

06-详解route对象与router对象

  • route对象用来获取路由信息,是针对获取操作的,主要是操作当前路由的。

    • route对象具体功能如下:(主要是一些路由信息)

      • fullPath
      • hash
      • href
      • matched
      • meta
      • name
      • params
      • path
      • query
  • router对象用来调用路由方法,是针对设置操作的,主要是操作整个路由系统对应的功能.

    • router对象具体功能如下:(主要是一些方法)

      • addRoute
      • afterEach
      • back
      • beforeEach
      • beforeResolve
      • currentRoute
      • forward
      • getRoutes
      • go
      • hasRoute
      • push
      • removeRoute

07-路由守卫详解及应用场景

  • vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航
    • 进入到指定路由前做一个拦截,看一下我们是否具备权限,如果有权限就直接进入,如果没权限就跳转到其他页面。
  • 路由守卫分类
    • 全局环境的守卫beforEach
      在这里插入图片描述

    • 路由独享的守卫beforeEnter
      在这里插入图片描述

    • 组件内的守卫beforeRouteEnter
      在这里插入图片描述

  • 完整的导航解析流程
    1. 导航被触发。
    2. 在失活的组件里调用 beforeRouteLeave 守卫。
    3. 调用全局的 beforeEach 守卫。
    4. 在重用的组件里调用 beforeRouteUpdate 守卫(2.2+)。
    5. 在路由配置里调用beforeEnter
    6. 解析异步路由组件。
    7. 在被激活的组件里调用 beforeRouteEnter。
    8. 调用全局的 beforeResolve 守卫(2.5+)。
    9. 导航被确认。
    10. 调用全局的 afterEach 钩子。
    11. 触发 DOM 更新。
    12. 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入

相关文章:

深入理解 Vue Router:构建可靠的前端路由系统

目录 01-什么是前端路由以及路由两种模式实现原理02-路由的基本搭建与嵌套路由模式03-动态路由模式与编程式路由模式04-命名路由与命名视图与路由元信息05-路由传递参数的多种方式及应用场景06-详解route对象与router对象07-路由守卫详解及应用场景 01-什么是前端路由以及路由两…...

Mysql B+数索引结构

一、B树和B树区别 二、 B 树形成过程 三、页分裂过程 3.1 页分裂过程实例 3.1.1 原有数据1、3、5形成如下数据页 3.1.2 先新插入数据4,因为 页10 最多只能放3条记录所以我们不得不再分配一个新页: 新分配的数据页编号可能并不是连续的,也…...

在window上配置NASM

NASM是支持x86、x64架构CPU的汇编器(汇编软件);NASM也支持大量的文件格式,包括Linux,*BSD,a.out,ELF,COFF,Mach−O,Microsoft 16−bit OBJ,Win32以及Win64,同…...

用QT实现MVP模式

近些天用qt 作项目,遇到参数界面.偷闲写个mvp模式示例. mvp模式重要的有两点 1 低耦合: 界面与后端数据类,不直接引用,可方便替换. 2 形成界面驱动-界面更新的闭环.:通过函数指针类技术,让数据自动回流. MVP (Model-View-Presenter) 视图(View): 接…...

(2023)Linux安装pytorch并使用pycharm远程编译运行

(2023)Linux安装pytorch并使用pycharm远程编译运行 安装miniconda 这部分参考我这篇博客的前半部分Linux服务器上通过miniconda安装R(2022)_miniconda 安装r_Dream of Grass的博客-CSDN博客 创建环境 创建一个叫pytorch的环境…...

poi带表头多sheet导出

导出工具类 package com.hieasy.comm.core.excel;import com.hieasy.comm.core.excel.fragment.ExcelFragment; import com.hieasy.comm.core.utils.mine.MineDateUtil; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.*; import org.apache.po…...

RedisDesktopManager(redis客户端,可输入用户名密码)

RedisDesktopManager(redis客户端,可输入用户名密码) Redis桌面管理器(又名RDM) - 是一个用于Windows,Linux和MacOS的快速开源Redis数据库管理应用程序。可以使用url连接或账号密码。 redis设置账号密码后…...

【Adobe After Effects】关于ae点击空格不会播放反而回退一帧的解决方案

最近玩ae的时候遇见了一个小问题,就是有时候敲空格,视频没办法播放,反而会回退一帧,经过摸索发现了一个解决办法: 点击编辑---首选项 然后选择“音频硬件” 然后选择正确的默认输出,点击确定即可...

Linux网络编程:多路I/O转接服务器(select poll epoll)

文章目录: 一:select 1.基础API select函数 思路分析 select优缺点 2.server.c 3.client.c 二:poll 1.基础API poll函数 poll优缺点 read函数返回值 突破1024 文件描述符限制 2.server.c 3.client.c 三:epoll …...

Mybatis系列原理剖析之项目实战:自定义持久层框架

Mybatis系列原理剖析之:项目实战:自定义持久层框架 持久层是JAVA EE三层体系架构中,与数据库进行交互的一层,持久层往往被称为dao层。需要说明的是,持久层的技术选型有很多,绝不仅仅只有mybatis一种。像早…...

阿里云 Serverless 应用引擎 2.0,正式公测!

阿里云 Serverless 应用引擎 SAE2.0 正式公测上线!全面升级后的 SAE2.0 具备极简体验、标准开放、极致弹性三大优势,应用冷启动全面提效,秒级完成创建发布应用,应用成本下降 40% 以上。 此外,阿里云还带来容器服务 Se…...

西北大学计算机考研844高分经验分享

西北大学计算机考研844经验分享 个人介绍 ​ 本人是西北大学22级软件工程研究生,考研专业课129分,过去一年里在各大辅导机构任职,辅导考研学生专业课844,辅导总时长达288小时,帮助多名学生专业课高分上岸。 前情回顾…...

【java并发编程的艺术读书笔记】volatile关键字介绍、与synchronized的区别

volatile的简介 volatile是轻量级锁,只用来修饰变量,保证这个变量在多线程下的可见性以及一致性(一个volatile变量被线程修改时会立刻通知其他所有线程),防止指令重排序,但是并不能保证绝对的线程安全 vol…...

LinkedList的顶级理解

目录 1.LinkedList的介绍 LinkedList的结构 2.LinkedList的模拟实现 2.1创建双链表 2.2头插法 2.3尾插法 2.4任意位置插入 2.5查找关键字 2.6链表长度 2.7遍历链表 2.8删除第一次出现关键字为key的节点 2.9删除所有值为key的节点 2.10清空链表 2.11完整代码 3.…...

再学http-为什么文件上传要转成Base64?

1 前言 最近在开发中遇到文件上传采用Base64的方式上传,记得以前刚开始学http上传文件的时候,都是通过content-type为multipart/form-data方式直接上传二进制文件,我们知道都通过网络传输最终只能传输二进制流,所以毫无疑问他们本…...

使用oracleVM搭建虚拟机

选择新建,点击 取名字,选择你的安装路径,选择你爹镜像光盘,再勾选下面的,表示跳过一些步骤 其他的都可以默认,下一步即可 创建好了,点击设置,改变光驱,硬盘的顺序 等待它…...

深入探讨C存储类和存储期——Storage Duration

🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅&#…...

医学图像融合的深度学习方法综述

文章目录 Deep learning methods for medical image fusion: A review摘要引言非端到端的融合方法基于深度学习的决策映射基于深度学习的特征提取 端到端图像融合方法基于卷积神经网络(CNN)的图像融合方法单级特征融合方法多级特征融合基于残差神经网络的图像融合方法基于密集神…...

【Qt学习】04:QDialog

QDialog OVERVIEW QDialog一、自定义对话框1.模态对话框2.非模态对话框3.练习代码 二、标准对话框1.消息对话框2.文件对话框3.颜色对话框4.字体对话框 对话框是 GUI 程序中不可或缺的组成部分,对话框通常会是一个顶层窗口出现在程序最上层,用于实现短期任…...

如何更好的进行异常处理

背景 在实际开发中,我们都希望程序可以一直按照期望的流程,无误的走下去。但是由于不可避免的内外部因素,可能导致出现异常的情况,轻则导致报错,重则数据错乱、服务不可用等情况。严重影响系统的稳定性,甚至…...

SEO_本地中小企业快速见效的SEO操作指南(345 )

SEO:本地中小企业快速见效的SEO操作指南 在当今数字化时代,本地中小企业如何在竞争激烈的市场中脱颖而出,是每一个企业主都需要面对的问题。本文将从多个角度为你详细解析如何通过SEO(搜索引擎优化)让本地中小企业迅速见效。 问…...

7自由度开源机械臂:如何用6500美元构建AI研究新范式?

7自由度开源机械臂:如何用6500美元构建AI研究新范式? 【免费下载链接】openarm A fully open-source humanoid arm for physical AI research and deployment in contact-rich environments. 项目地址: https://gitcode.com/GitHub_Trending/op/openar…...

AI学习路线及建议

1.python快速入门(边用边学,建议3天) 2.人工智能必备数学的基础(边用边学,建议3天) 3.机器学习(找工作面试考点,临面试前晚一点刷) 数据分析:短期找工作 ML/D…...

用快马AI一键生成数据库管理原型,告别navicat手工建表写接口

用快马AI一键生成数据库管理原型,告别navicat手工建表写接口 最近在开发一个员工信息管理系统时,我深刻体会到传统数据库管理工具的局限性。虽然navicat这类工具能帮我们可视化操作数据库,但每次新建项目都要手动建表、写接口,重…...

开源吐槽大会:技术圈的幽默自省

开源项目吐槽大会技术文章大纲主题与目的开源项目吐槽大会旨在通过幽默、犀利的视角,揭示开源生态中的常见问题,促进开发者反思与改进。文章将从技术、社区、维护等角度展开,兼顾娱乐性与建设性。核心内容结构技术层面的经典槽点 依赖地狱&am…...

Phi-4-mini-reasoning效果对比:在GSM8K与AQuA数据集上的zero-shot推理表现

Phi-4-mini-reasoning效果对比:在GSM8K与AQuA数据集上的zero-shot推理表现 1. 模型介绍 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别擅长处理需要多步逻辑分析和精确结论输出的任务场景。与通用对话模型不同,它被专门设计…...

QModMaster:5分钟掌握免费开源ModBus调试工具终极指南

QModMaster:5分钟掌握免费开源ModBus调试工具终极指南 【免费下载链接】qModbusMaster 项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster 你是否在为工业设备调试而烦恼?面对复杂的ModBus通信协议,商业软件价格昂贵&#…...

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议 当CLIP遇上业务场景,90%的开发者都会遇到相同的问题:模型在新类别上的表现总是不尽如人意。上周团队用默认参数跑跨模态检索任务时,基类准确率82%的…...

Potree 点云可视化实战指南:从基础配置到高级测量技巧

1. Potree点云可视化入门指南 第一次接触Potree时,我被它处理海量点云数据的能力震撼到了。这个基于WebGL的开源库,能让普通浏览器流畅渲染上亿级别的点云数据。想象一下,不用安装专业软件,打开网页就能查看精细的激光扫描模型&am…...

基于MCGS嵌入版7.7的全自动洗车机组态仿真程序编写与流程图详解

MCGS洗车程序 MCGS嵌入版7.7组态仿真程序 全自动洗车机,脚本程序编写 有完整的流程图"这洗车机PLC程序怎么又卡在喷淋环节了?"凌晨两点的工控车间里,我盯着MCGS嵌入版的仿真界面直挠头。全自动洗车机的脚本调试真是个磨人的小妖精&…...