vue保姆级教程----深入了解 Vue Router的工作原理

news2024/12/23 14:43:53

📢 鸿蒙专栏:想学鸿蒙的,冲

📢 C语言专栏:想学C语言的,冲

📢 VUE专栏:想学VUE的,冲这里

📢 CSS专栏:想学CSS的,冲这里

📢 Krpano专栏:想学VUE的,冲这里

🔔 上述专栏,都在不定期持续更新中!!!!!!!!!!!!!

目录

✨ 前言

✨ vue-router详解

vue-router的组成部分

前端路由的两种模式

导航解析流程

路由信息对象

✨ 结语


✨ 前言

        Vue Router是Vue.js的官方路由管理器,它与Vue.js核心深度集成,可以很好地帮助我们构建单页面应用。那么它是如何工作的呢?本文将带你深入了解vue-router的工作原理。

✨ vue-router详解

vue-router的组成部分

  • Route:路由对象,包含路径、组件等路由信息。
    const routes = [
      {
        path: '/user/:id',
        component: User,
        alias: '/usr', 
        meta: { requiresAuth: true }
      }
    ]
  • Router:路由器对象,包含路由映射表和监听路由改变。
    const router = new VueRouter({
      routes // 路由映射表
    })
    
    // 监听路由改变事件
    router.beforeEach((to, from, next) => {
      // ...
    })
  • Router-view:根据当前路由渲染匹配的组件,是一个Outlet。
    <router-view></router-view>
  • Router-link:路由连接,绑定到对应路由的锚点标签。
    <router-link to="/user/123">User</router-link>
  • 导航守卫(Navigation Guards):可在路由导航发生时进行访问控制。

导航守卫的类型

  • 全局守卫:router.beforeEach,监听每一个路由导航。
  • 路由独享守卫:beforeEnter在路由配置中定义。
  • 组件内守卫:beforeRouteEnter,在激活组件前调用。

钩子的参数

  • to:目标路由对象
  • from:当前导航要离开的路由
  • next:调用该方法来resolve这个钩子

next方法的处理

  • next():进行管道中的下一个钩子。
  • next(false):中断当前导航。
  • next('/path'):跳转到一个不同的地址。
  • next(error):传入一个Error实例作为参数,导航会被终止且该错误会被传递给 router.onError() 注册过的回调。

应用场景

  • 权限控制:检查用户权限 then决定允许进入路由或退回登录页。
  • 数据预取:在进入路由前预先获取数据。
  • 异步导航:路由导航成功之前展示“加载中”。

所以导航守卫可以对路由进行更多控制,是vue-router强大的功能之一。

router.beforeEach((to, from, next) => {
  // ...
  next() 
})

前端路由的两种模式

vue-router支持两种路由模式:

  • hash: hash模式利用 URL 的 hash 实现路由。比如 http://example.com/#/user

优点是兼容性好,无须服务器配置。但 URL 不够优雅,有 #,不符合 REST 风格。

实现:监听 hashchange 事件,根据 hash 更新组件。

window.addEventListener('hashchange', () => {
  // 根据 hash 读取组件
})
  • history:history 模式通过 history API 改变 URL,如 http://example.com/user

优点是 URL 优雅,没有 # 。但需要服务端支持,解析 URL 并重定向。

实现:通过 history.pushState() 改变 URL,监听 popstate 事件。

总结:

  • hash 模式兼容性好,但 URL 不够优雅。
  • history 模式 URL 优雅,但需要服务端配合解析。
  • Vue Router 默认支持两种模式,可以根据需求选择。

导航解析流程

  1. 初始化路由器,注册路由表规则。
  2. Router-link组件或代码导航触发路由change。
  3. Router匹配当前URL,解析出目标路由记录。
  4. Router确认转移路由后,更新视图和URL。
  5. 组件根据路由参数准备数据,Router-view呈现组件。

路由信息对象

每个路由都会映射一个组件,同时可以有额外的元信息:

✨ 结语

        vue-router通过管理路由与组件的动态映射,实现了单页面应用的不同页面之间的切换。路由器监听 URL 变化,映射匹配的路由配置,然后渲染目标组件。各种路由钩子也让我们可以更好地控制路由导航。

        总而言之,vue-router为Vue单页面应用提供了便捷的客户端路由管理,使得页面模块化和开发更加高效。它与Vue深度集成,使构建复杂的单页面应用变得简单自然。正确理解和灵活运用其工作原理,可以使我们的Vue项目开发达到更高的水准。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年最新版 Ubuntu 20+ 上安装 Docker

2024年最新版 Ubuntu 20 上安装 Docker 一、前言 在网上搜了一些安装docker的方法&#xff0c;怎么说感觉良莠不齐&#xff0c;参考GPT整理一下来自GPT4这边的安装docker的解决方法&#xff0c;实测能用》2024.1.2&#xff0c;大概耗时7分钟左右&#xff08;在没报错的情况下…

深度学习|2.4 梯度下降

如上图&#xff0c; J ( w , b ) J(w,b) J(w,b)是由w和b两个参数共同控制的损失函数&#xff0c;损失是不好的东西&#xff0c;所以应该求取合适的w和b使得损失最小化。 为了简单考虑&#xff0c;可以先忽略参数b。 斜率可以理解成在朝着x正方向移动单位距离所形成的损失值的变…

Springer build pdf乱码

在textstudio中编辑时没有错误&#xff0c;在editor manager生成pdf时报错。 首先不要改源文件&#xff0c;着重看你的上传顺序&#xff1a; 将.tex文件&#xff0c;.bst文件&#xff0c;.cls文件&#xff0c;.bib文件, .bbl文件的类型&#xff0c;在editor manager中是Item。…

大数据机器学习GAN:生成对抗网络GAN全维度介绍与实战

文章目录 大数据机器学习GAN&#xff1a;生成对抗网络GAN全维度介绍与实战一、引言1.1 生成对抗网络简介1.2 应用领域概览1.3 GAN的重要性 二、理论基础2.1 生成对抗网络的工作原理2.1.1 生成器生成过程 2.1.2 判别器判别过程 2.1.3 训练过程训练代码示例 2.1.4 平衡与收敛 2.2…

Python爬虫---selenium基本使用

为什么使用selenium&#xff1f; 使用urllib.request.urlopen()模拟浏览器有时候获取不到数据,所以使用selenium (1) selenium是一个用于web应用程序测试的工具 (2) selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样 (3) 支持通过各种driver (FirfoxDri…

工单系统搭建方案 低代码平台快速开发客服工单系统

随着企业数字化转型的加速&#xff0c;工单系统已成为企业运营管理的重要工具之一。通过工单系统&#xff0c;企业可以高效地管理任务、工作流程和业务流程。而低代码平台作为快速应用开发的方式&#xff0c;为企业搭建工单系统提供了更加便捷和灵活的解决方案。本文将介绍如何…

2012年第一届数学建模国际赛小美赛B题大规模灭绝尚未到来解题全过程文档及程序

2012年第一届数学建模国际赛小美赛 B题 大规模灭绝尚未到来 原题再现&#xff1a; 亚马逊是地球上现存最大的雨林&#xff0c;比地球上任何地方都有更多的野生动物。它位于南美洲大陆的北侧&#xff0c;共有9个国家&#xff1a;巴西、玻利维亚、厄瓜多尔、秘鲁、哥伦比亚、委…

让电脑变得更聪明——用python实现五子棋游戏

作为经典的棋类游戏&#xff0c;五子棋深受大众喜爱&#xff0c;但如果仅实现人与人的博弈&#xff0c;那程序很简单&#xff0c;如果要实现人机对战&#xff0c;教会计算机如何战胜人类&#xff0c;那就不是十分容易的事了。本文我们先从简单入手&#xff0c;完成五子棋游戏的…

C# OpenCvSharp读取rtsp流录制mp4可分段保存

软件界面&#xff1a; 测试环境&#xff1a; VS2019 .NET Framework 4.7.2 OpencvSharp4.8.0 输入RTSP流地址即可拉取RTSP流&#xff0c;支持抓拍和录制RTSP流视频&#xff0c;且支持支持按固定时间保存&#xff0c;比如我想5分钟保存一个视频&#xff0c;设置保存间隔为30…

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构 1 先来认识GTM的通用架构2 概览2.1 架构的简要说明2.2 架构概述1 先来认识GTM的通用架构 GTM系统使用GTM全局时钟fGTM 运行(本文称为SYS_CLK)。 特点如下: GTM模块由两个主要部分组成: 由博世设计的GTM IP v3.1.5.1 …

leaflet学习笔记-leaflet-ajax获取数据(五)

前言 地图开发中都会用一些GeoJSON数据进行渲染&#xff0c;这是用就会需要加载GeoJSON数据&#xff0c;这时就可以使用leaflet-ajax进行数据的获取 数据准备 本文通过阿里云的地图选择器&#xff08;DataV.GeoAtlas官网&#xff09;可以找到云南省的GeoJSON数据&#xff0c…

Vue3 watch 的使用,如何监听一个对象中的属性值的变化 vue3 + ts + vite

Vue3 watch 的使用&#xff0c;如何监听一个对象中的属性值的变化 由 vue2 转到 vue3 ts vite 之后都不会写这些玩意了。搜了下&#xff0c;找到了答案&#xff1a; vue2 的 watch export default {watch: {$route.query.id(newValue){// 可以这样监听路由的变化},formUse…

漏洞分析|jeecg-boot 未授权SQL注入漏洞(CVE-2023-1454)

1.漏洞描述 JeecgBoot的代码生成器是一种可以帮助开发者快速构建企业级应用的工具&#xff0c;它可以通过一键生成前后端代码&#xff0c;无需写任何代码&#xff0c;让开发者更多关注业务逻辑。 jeecg-boot 3.5.0版本存在SQL注入漏洞&#xff0c;该漏洞源于文件 jmreport/qu…

华为鸿蒙运行Hello World

前言&#xff1a; 从11月中旬开始通过B站帝心接触鸿蒙&#xff0c;至今一个半月左右不到&#xff0c;从小白到入坑&#xff0c;再到看官网案例&#xff0c;分析案例&#xff0c;了解技术点&#xff0c;还需要理清思路&#xff0c;再写博客&#xff0c;在决定写 &#xff1c;Har…

七、HTML 文本格式化

一、HTML 文本格式化 加粗文本斜体文本电脑自动输出 这是 下标 和 上标 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>HTML文本格式化</title> </head><body><b>加粗文本</b><br>…

商用密码应用安全评估实施方案(50页PPT)

商用密码应用安全评估:简称密评&#xff0c;是指在采用商用密码技术、产品和服务集成建设的网络和信息系统中&#xff0c;对其密码应用的合规性、正确性和有效性进行评估的过程。这一评估过程是根据《中华人民共和国密码法》等相关法规和标准进行的。 合规性评估主要是检查密码…

Premiere Pro教程(全)

项目面板 素材箱 工具面板 轨道选择工具 波纹编辑工具 视频裁剪工具 时间轴面板 时间轴相关快捷键 素材编辑 源面板 插入 节目面板 基本声音 效果面板 效果快捷键 视频效果 视频过渡 全部面板 通用快捷键 效果控件 效果控件概述 码表 运动 不透明度 字幕组 字幕…

7+WGCNA+机器学习+泛癌生信思路,非肿瘤也能结合泛癌分析

今天给同学们分享一篇生信文章“Analysis and Experimental Validation of Rheumatoid Arthritis Innate Immunity Gene CYFIP2 and Pan-Cancer”&#xff0c;这篇文章发表在Front Immunol期刊上&#xff0c;影响因子为7.3。 结果解读&#xff1a; DEG筛选和数据预处理 数据在…

Vue3复习笔记

目录 挂载全局属性和方法 v-bind一次绑定多个值 v-bind用在样式中 Vue指令绑定值 Vue指令绑定属性 动态属性的约束 Dom更新时机 ”可写的“计算属性 v-if与v-for不建议同时使用 v-for遍历对象 数组变化检测 事件修饰符 v-model用在表单类标签上 v-model还可以绑定…

HTML5+CSS3④——选择器、复合选择器

目录 选择器 标签选择器 类选择器 id选择器 通配符选择器 复合选择器 后代选择器 子代选择器 并集选择器 交集选择器 选择器 标签选择器 类选择器 id选择器 通配符选择器 复合选择器 后代选择器 子代选择器 并集选择器 交集选择器