Vue Router 动态路由

聚沙成塔·每天进步一点点

本文内容

  • ⭐ 专栏简介
    • 1. 动态路由的使用
    • 2. 动态路由的原理解析
      • 路由匹配
      • 路由参数的传递
      • 组件渲染
      • 动态路由的变化
    • 3. 更多动态路由的实例
      • 3.1. 动态路径匹配多层级
      • 3.2. 动态路径的正则匹配
      • 3.3. 编程式导航与动态路由
    • 总结
  • ⭐ 写在最后


⭐ 专栏简介

Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习。每篇文章都致力于提供清晰、深入的参考资料,让你能够更轻松、更自信地理解和掌握 Vue.js 的核心概念和技术。订阅这个专栏,让我们一同踏上更深入的 Vue学习之旅!为你的前端技能树添砖加瓦!

在这里插入图片描述


动态路由是 Vue Router 提供的一项强大功能,它允许在路由中设置参数,使得路由的部分内容变得动态可变。在本文中,我们将深入探讨 Vue Router 中的动态路由使用方法,并详细解析其背后的原理。

1. 动态路由的使用

在 Vue Router 中,我们可以通过在路由路径中设置参数来创建动态路由。这些参数会在路由匹配时被捕获,并传递给相应的组件。让我们通过一个实例来看看如何使用动态路由:

// 在路由配置中设置动态路由
const routes = [
  { path: '/user/:id', component: User },
];

// 在组件中通过 $route.params 访问动态路由参数
export default {
  methods: {
    getUserId() {
      const userId = this.$route.params.id;
      // 使用 userId 进行其他操作
    },
  },
};

在上述例子中,:id 是一个动态参数,它表示匹配任意字符的占位符。当用户访问 /user/123 时,:id 将匹配 123,并将其作为参数传递给 User 组件。这种灵活的路由配置使得我们能够根据需要动态地生成页面内容。

2. 动态路由的原理解析

Vue Router 的动态路由实现涉及了一些核心原理,我们将逐步解析这些原理,以深入理解 Vue Router 的底层机制。

路由匹配

动态路由的匹配是由 Vue Router 的 Matcher 实现的。Matcher 负责管理所有的路由配置,包括静态路由和动态路由。当用户访问一个路径时,Matcher 会根据路径和配置进行匹配,找到匹配的路由记录。这个过程是高效且可扩展的,确保了在大型应用中也能迅速找到正确的路由。

路由参数的传递

在动态路由匹配成功后,Vue Router 会将捕获到的参数存储在路由的 $route 对象中。这个对象包含了当前路由的所有信息,其中 params 属性存储了动态路由的参数。这样,在组件内部就可以通过 this.$route.params 访问到动态路由的参数,进而根据参数执行相应的逻辑。

组件渲染

当路由匹配成功且组件需要渲染时,Vue Router 会将匹配的组件渲染到 <router-view> 中。这是通过 Vue.js 的动态组件特性实现的。<router-view> 是一个函数式组件,它会根据当前路由匹配的组件动态渲染。这种机制使得页面可以根据路由的变化实时更新,同时保持了高效的渲染性能。

动态路由的变化

当动态路由发生变化(例如用户切换到不同的动态路径时),Vue Router 会重新匹配路由,更新路由参数,并重新渲染相应的组件。这种动态响应的机制确保了用户在导航时能够流畅地切换页面,同时组件能够根据新的路由参数进行更新。

3. 更多动态路由的实例

让我们通过更多实例来深入了解动态路由的应用场景和使用技巧。

3.1. 动态路径匹配多层级

动态路由不仅仅局限于单层路径,还可以实现多层级的动态路径匹配。例如,我们希望匹配 /user/:id/post/:postId 这样的路径:

const routes = [
  { path: '/user/:id/post/:postId', component: UserPost },
];

在这个例子中,既捕获了用户的 id,又捕获了帖子的 postId。这样就可以更灵活地处理多层级的路由嵌套。

3.2. 动态路径的正则匹配

有时候,我们可能需要对动态路径进行更复杂的匹配,例如只匹配数字。Vue Router 允许使用正则表达式进行动态路径的匹配:

const routes = [
  { path: '/user/:id(\\d+)', component: User },
];

这样,:id 将只匹配数字,确保了路由的安全性和正确性。

3.3. 编程式导航与动态路由

在某些场景下,我们可能需要通过代码来实现页面导航。Vue Router 提供了编程式导航的方式,例如在事件处理函数或异步操作完成后跳转到新的路由:

methods: {
  goToUser(userId) {
    this.$router.push(`/user/${userId}`);
  },
},

这样,通过编程方式修改路由,就可以动态地跳转到不同的用户页面。

总结

通过深入了解 Vue Router 动态路由的使用和原理,我们能够更好地应用这一功能,构建出更加灵活和动态的单页面应用。同时,了解其背后的实现原理也为我们在遇到复杂场景时提供了更多解决问题的思路。在实际项目中,灵活使用动态路由,结合编程式导航,能够为用户提供更加流畅和友好的使用体验。


⭐ 写在最后

欢迎来到《Vue技能树专栏》!本专栏旨在帮助您全面深入地掌握Vue.js,一款现代、灵活且强大的JavaScript框架。无论您是初学者还是有一定经验的开发者,这里都将为您提供详细的指导、实用的技巧以及深入的理解,助您在Vue.js世界中游刃有余。如果文中出现有瑕疵的地方各位可以通过主页的左侧联系我指正,我们一起进步,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS 3D三角彩色锥形旋转动画效果

<template><view class="pyramid-loader"><view class="wrapper"><span class="side side1"></span> <!-- 金字塔的一个面 --><span class="side side2"></span> <!-- 金字塔的…

会计试算平衡

目录 一. 试算平衡的意义二. 试算平衡的原理和内容三. 试算平衡表 \quad 一. 试算平衡的意义 \quad ①验证错误 ②便于编制会计报表 试算表根据各分类账借贷余额汇总编制而成&#xff0c;依据试算表编制会计报表将比直接依据分类账来编制更为方便,拥有大量分类账的企业尤为便捷…

浙大发布Agent学习框架,13B 模型达到 ChatGPT 水平!

2023 年下半年&#xff0c;AI Agent 正式开启「大模型下半场」。 自“人工智能”这门学科创立之初&#xff0c;一种可以“观察世界”-“思考推理”-“做出行动”-“反思学习”的人造代理就是构建通用人工智能的终极目标之一。而基于大模型的 AI Agent 借助大模型强大的推理判断…

(天坑的87端口)nginx代理端口不生效,代理87端口遇到的问题及原因

目录 一. 问题产生 二.问题现象 三.问题排查 四.柳暗花明 五.解决方案 六.不安全的端口号 七.总结 一. 问题产生 因为之前的一个项目一直是用的86端口&#xff0c;这次要在一台新的服务器上重新部署两个项目&#xff0c;很自然而然的继续86端口&#xff0c;另一个也没想&…

【数据结构与算法】之哈希表系列-20240130

这里写目录标题 一、383. 赎金信二、387. 字符串中的第一个唯一字符三、389. 找不同四、409. 最长回文串五、448. 找到所有数组中消失的数字六、594. 最长和谐子序列 一、383. 赎金信 简单 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不…

C++/MFC:在窗体Form(Dialog)中多个编辑框时,在输入时将回车解释为TAB键,将输入焦点移到下一个编辑框的方法

很多时候&#xff0c;为了输入方便&#xff0c;常用的做法&#xff0c;就是将回车键解释为将输入焦点移动到下一个编辑框中。就像是我的VxTerm中的快速连接输入一样&#xff1a; VxTerm是一个国产化替代的SSH工具&#xff0c;可以从本站的资源中免费下载并且免费使用&#xff…

R高级绘图 | P1 | 带边缘分布散点图 | 代码注释 + 结果解读

新系列 —— R高级绘图&#xff0c;准备整理所有曾经绘制过的图图和未来需要的图图们的代码&#xff01;预计这个系列会囊括所有常见图形&#xff0c;只提供高级绘图代码&#xff0c;基础绘图主要在 R语言绘图 系列中进行介绍&#xff0c;这个系列咱们主打&#xff1a;需要XX图…

数学公式OCR识别php 对接mathpix api 使用公式编译器

数学公式OCR识别php 对接mathpix api 一、注册账号官网网址&#xff1a;https://mathpix.com 二、该产品支持多端使用注意说明&#xff08;每月10次&#xff09; 三、api 对接第一步创建create keyphp对接api这里先封装两个请求函数&#xff0c;get 和post &#xff0c;通过官方…

Kotlin快速入门系列11

Kotlin的集合 集合类 Java类库有一套相当完整的容器集合类用来持有对象。跟Java一样&#xff0c;集合类存放的都是对象的引用&#xff0c;而非对象本身(我们经常说的集合指的是集合中对象的引用)&#xff0c;Kotlin的集合类是在Java的集合类库基础上进行的优化&#xff0c;新引…

拥抱变局,坚韧向新|复旦大学-华盛顿大学EMBA项目C20毕业典礼

12月初&#xff0c;复旦大学-华盛顿大学EMBA项目20班的学员们前往美国&#xff0c;完成了项目最后一次移动课堂&#xff0c;并在奥林商学院举办了毕业典礼。      20班的学员们在项目20周年之际入学&#xff0c;也是疫情以来第一个正式恢复线下授课的班级。虽然经历了一些波…

《二叉树》——3(层序遍历)

目录 前言&#xff1a; 层序遍历: 解析&#xff1a; 前言&#xff1a; 本文主讲链式二叉树的层序遍历&#xff0c;在前面的张篇blog我们初步实现了链式二叉树递归部分的内容&#xff0c;对于递归算法的学习和思维方式我们仍然需要不断加强&#xff0c;所以将对链式二叉树进行…

Docker本地部署Firefox浏览器并结合内网穿透公网访问

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

Python pip 不是内部或外部命令...

文章目录 1 问题截图2 解决办法2.1 配置环境变量2.2 试试 pip3 3 扩展分析3.1 查询 Python 版本及位数3.2 查询 Python 安装路径3.3 查询当前 pip 的版本 1 问题截图 2 解决办法 2.1 配置环境变量 2.2 试试 pip3 根据安装的 Python 版本不同&#xff0c;使用的 pip 也会不同若…

ESP8266 AP配网

首先引入需要的库 #include <WiFiManager.h> // https://github.com/tzapu/WiFiManager 在setup() 方法中设置网络名称等待登录连接 void setup(){Serial.println("Wait for Smartconfig");WiFi.mode(WIFI_STA);WiFiManager wm;bool res;res wm.autoConnec…

基础小白快速入门python------Python程序设计结构,循环

循环在计算机中&#xff0c;是一个非常重要的概念&#xff0c;是某一块儿代码的不断重复运行&#xff0c;是一种逻辑思维 在编程中的体现&#xff0c;运用数学思维加代码结合加数据&#xff0c;就构成了一个循环。 在Python中&#xff0c;循环主要分为三大类 for循环 while循…

面试必考精华版Leetcode450. 删除二叉搜索树中的节点

题目&#xff1a; 代码&#xff08;首刷看解析&#xff09;&#xff1a; class Solution { public:TreeNode* deleteNode(TreeNode* root, int key) {if(rootnullptr){return nullptr;}if(root->val > key ){root->left deleteNode(root->left,key);return root;…

EXCEL VBA实现重复字段出现次数并列显示

EXCEL VBA实现重复字段出现次数并列显示 Sub dotest() Dim arr, dApplication.ScreenUpdating FalseSet d CreateObject("Scripting.Dictionary")With Sheets("Sheet2")r .Cells(.Rows.Count, "a").End(xlUp).Rowarr .[a1].Resize(r, 1)En…

幻兽帕鲁服务器多少钱?服务器租借价格一览表

2024年幻兽帕鲁服务器价格表更新&#xff0c;阿里云、腾讯云和华为云Palworld服务器报价大全&#xff0c;4核16G幻兽帕鲁专用服务器阿里云26元、腾讯云32元、华为云26元&#xff0c;阿腾云atengyun.com分享幻兽帕鲁服务器优惠价格表&#xff0c;多配置报价&#xff1a; 幻兽帕鲁…

福布斯财富增长榜前十富豪身价暴增3.5万亿!他们致富的秘诀究竟是?

按照《福布斯》最新的数据显示&#xff0c;今年全球前十位财富增长最多的富豪的身家总共增加了4900亿美元&#xff08;约3.5万人民币&#xff09;&#xff0c;大家可能对于3.5万亿没什么概念&#xff0c;但是换算一下&#xff0c;中国一共才14亿人&#xff0c;如果把这3.5万亿平…

测试环境搭建整套大数据系统(二:安装jdk,mysql)

一&#xff1a;安装JDK 参考 https://blog.csdn.net/weixin_43446246/article/details/123328558 二&#xff1a;安装mysql 1.因为我们安装cdh6.3.2。cdh支持的是5.6和5.7版本的mysql。 2. 步骤 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.…