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

超级英雄的导航之旅:动态路由和嵌套路由

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

    • 介绍动态路由的概念和用法
    • 处理带参数的路由
    • 创建嵌套路由的结构和用法

介绍动态路由的概念和用法

动态路由是指根据不同的参数或路径生成的路由。它允许我们根据特定的值动态创建路由,而不是在路由配置时硬编码地写入所有可能的路由。

动态路由的概念和用法如下:

  1. 定义动态路由路径:在路由配置中,可以使用冒号(:)来定义动态片段,表示该部分路径可以根据特定的值动态生成。
const router = new VueRouter({routes: [{path: '/users/:id',component: UserDetail}]
});

在上述代码中,路径 /users/:id 中的 :id 是一个动态片段,表示该部分路径可以匹配任意的值。

  1. 访问动态路由参数:在路由组件中,可以通过 $route.params 来访问动态路由的参数。
// UserDetail.vue
export default {created() {const userId = this.$route.params.id;// 使用 userId 做相应的操作,例如获取用户信息}
};

在上述代码中,使用 this.$route.params.id 可以获取路由的动态参数 id,并在组件中使用。

  1. 监听动态路由的变化:如果动态路由的参数发生变化,可以监听 $route 对象的变化,并通过钩子函数或观察者来处理。

钩子函数方式监听:

// UserDetail.vue
export default {beforeRouteUpdate(to, from, next) {const userId = to.params.id;// 根据新的 userId 做相应的操作next();}
};

观察者方式监听:

// UserDetail.vue
export default {watch: {'$route' (to, from) {const userId = to.params.id;// 根据新的 userId 做相应的操作}}
};

通过钩子函数或观察者,可以在动态路由参数发生变化时进行相应的操作,例如重新加载数据或更新组件。

动态路由允许我们根据不同的参数或路径生成路由,使得应用更灵活和可扩展。它适用于需要根据不同资源或实体显示不同内容的情况,例如显示不同用户的详细信息或不同文章的内容。

处理带参数的路由

处理带参数的路由是 Vue Router 中常见的需求之一。你可以使用动态路由或查询参数来处理带参数的路由。下面我将分别介绍它们的概念和用法:

  1. 动态路由参数:
    动态路由参数是将参数直接嵌入到路由的路径中。例如,对于路径 /users/:id,其中的 :id 就是一个动态路由参数。可以通过动态路由参数来实现根据不同的参数值动态生成路由。

定义动态路由路径时,在路由配置中使用冒号(:)来定义动态片段:

const router = new VueRouter({routes: [{path: '/users/:id',component: UserDetail}]
});

访问动态路由参数时,在路由组件中使用 $route.params 来获取参数的值:

// UserDetail.vue
export default {mounted() {const userId = this.$route.params.id;// 使用 userId 做相应的操作,例如获取用户信息}
};
  1. 查询参数:
    查询参数是以键值对的形式出现在 URL 中的参数。它们通常用于筛选、排序或传递其他可选参数。

定义带查询参数的路由路径时,可以使用 query 字段来指定查询参数:

const router = new VueRouter({routes: [{path: '/search',component: SearchResults}]
});

在页面跳转时,可以通过 $router.push 方法传递查询参数:

this.$router.push({path: '/search',query: {keyword: 'Vue',page: 1}
});

在路由组件中,可以通过 $route.query 来获取查询参数的值:

// SearchResults.vue
export default {mounted() {const keyword = this.$route.query.keyword;const page = this.$route.query.page;// 使用 keyword 和 page 做相应的操作,例如进行搜索结果展示}
};

通过查询参数,你可以在 URL 中传递一些可选的参数,从而实现不同的页面展示和功能触发。

以上是处理带参数的路由的概念和用法,你可以根据你的具体需求选择合适的方式。

创建嵌套路由的结构和用法

嵌套路由是指在 Vue Router 中创建具有父子关系的路由结构。通过嵌套路由,你可以在应用程序中创建层次结构和组织路由,以更好地管理和展示你的页面。

下面是创建嵌套路由的结构和用法:

  1. 定义父路由和子路由:
    在路由配置中,可以定义父路由和子路由。父路由用于对应一个页面组件,而子路由则是该页面组件内的子组件的路由。
const router = new VueRouter({routes: [{path: '/users',component: Users,children: [{path: 'profile',component: UserProfile},{path: 'settings',component: UserSettings}]}]
});

在上述代码中,/users 是父路由的路径,对应的组件是 UsersUsers 组件内部有两个子组件的路由,即 /users/profile 对应 UserProfile 组件,/users/settings 对应 UserSettings 组件。

  1. 在父组件中设置 <router-view>
    在父路由对应的组件模板中,添加 <router-view> 指令来标记子组件的出口位置。
<!-- Users.vue -->
<template><div><h1>Users Page</h1><router-view></router-view> <!-- 子组件的路由将在此处渲染 --></div>
</template>

在上述代码中,<router-view> 指令将作为子组件路由的渲染位置。

  1. 切换子路由:
    在父组件的模板中,可以使用 <router-link> 组件来切换不同的子路由。
<!-- Users.vue -->
<template><div><h1>Users Page</h1><router-link to="/users/profile">Profile</router-link><router-link to="/users/settings">Settings</router-link><router-view></router-view></div>
</template>

在上述代码中,<router-link> 组件将显示为链接,点击链接将切换到对应的子路由。

通过以上步骤,你就可以创建一个嵌套路由的结构。当访问父路由时,父组件将显示,并在其内部的 <router-view> 处渲染对应的子组件。

相关文章:

超级英雄的导航之旅:动态路由和嵌套路由

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

发现个好玩的 Windows微信对话框换行

按住shift键按enter就是换行 直接按enter为发送...

Vue3最佳实践 第八章 ESLint 与 测试 ( Jest )

Jest 测试 Vue 组件 ​在前端项目开发过程中&#xff0c;有很多时候也会要进行测试工作。本文将重点介绍如何利用 JavaScript 测试框架 Jest 进行高效的测试。Jest 是由 FaceBook 开发的顶级测试框架之一&#xff0c;广受开发者们的欢迎和信赖。在接下来的内容中&#xff0c;我…...

【抓包分析】通过ChatGPT解密还原某软件登录算法实现绕过手机验证码登录

文章目录 &#x1f34b;前言实现效果成品广告抓包分析一、定位加密文件二、编辑JS启用本地替换 利用Chatgpt进行代码转换获取计划任务id模拟数据请求最后 &#x1f34b;前言 由于C站版权太多&#xff0c;所有的爬虫相关均为记录&#xff0c;不做深入&#xff01; 今天发现gith…...

【UE】属性同步,源码详解一个勾选了Actor复制的Actor第一次被创建时经历了什么

本文参考https://zhuanlan.zhihu.com/p/640723352 准备工作 先准备一个勾选了复制的Actor&#xff0c;然后在游戏开始时Spawn这个Actor 源码过程详解 发送属性同步 在NetDriver的TickFlush中发送属性同步的数据 1、ServerReplicateActors_BuildConsiderList 去找到所有需…...

Spring中Bean的完整生命周期!(Bean实例化的流程,Spring后处理器,循环依赖解释及解决方法)附案例演示

Bean实例化的基本流程 加载xml配置文件&#xff0c;解析获取配置中的每个的信息&#xff0c;封装成一个个的BeanDefinition对象将BeanDefinition存储在一个名为beanDefinitionMap的Map<String,BeanDefinition>中ApplicationContext底层遍历beanDefinitionMap&#xff0c…...

AcWing第 127 场周赛 - AcWing 5283. 牛棚入住+AcWing 5284. 构造矩阵 - 模拟+快速幂+数学

AcWing 5283. 牛棚入住 题目数据范围不大&#xff0c;直接暴力模拟即可 按照题目所说的意思即可。 #include <math.h> #include <stdio.h> #include <algorithm> #include <cstring> #include <iostream> using namespace std; const int N 1…...

2023-10-31 游戏开发-微信小游戏-文档记录

摘要: 2023-10-31 游戏开发-微信小游戏-文档记录 微信开发文档: 快速上手 | 微信开放文档 基础 | 微信开放文档 Cocos/Laya/Egret引擎适配 | 微信开放文档 cocos和微信平台相关文档: Cocos Creator 3.8 手册 - 发布到微信小游戏...

2023NOIP A层联测21-异或

给定一长度为 N N N 的由非负整数组成的数组 a a a&#xff0c;你需要进行一系列操作&#xff0c;每次操作选择一个区间 [ l , r ] [l,r] [l,r]&#xff0c;将 a [ l , r ] a_{[l,r]} a[l,r]​ 异或上 w w w。你需要将 a i a_i ai​ 全部变为 0 0 0。 求最小操作次数。…...

分布式存储系统Ceph应用组件介绍

1、 无中心架构分布式存储Ceph Ceph是一套开源的分布式存储系统。具有可靠性高&#xff0c;性能优良&#xff0c;可伸缩&#xff0c;与HDFS不同的地方在于&#xff0c;该架构中没有中心节点。 Ceph优点在于它不单单是存储&#xff0c;同时还充分利用了存储节点上的计算能…...

【数据结构】数组和字符串(十一):字符串的定义与存储(顺序存储、链式存储及其C语言实现)

文章目录 4.3 字符串4.3.1 字符串的定义与存储1. 顺序存储2. 链式存储3. C语言实现顺序存储4. C语言实现链式存储代码优化 4.3 字符串 字符串(String)是由零个或多个字符(char)顺序排列组成的有限序列&#xff0c;简称为串。例如 “good morning”就是由12个字符构成的一个字符…...

zk-Bench:SNARKs性能对比评估工具

1. 引言 JENS ERNSTBERGER等人2023年论文《zk-Bench: A Toolset for Comparative Evaluation and Performance Benchmarking of SNARKs》。 zk-Bench&#xff0c;定位为&#xff1a; 定位为首个公钥密码学性能评估基准测试框架和工具&#xff0c;重点关注通用ZKP系统的实测评…...

【Linux】NTP服务器配置、时间修改

查看当前系统时间date修改当前系统时间date -s "2018-2-22 19:10:30"查看硬件时间hwclock --show修改硬件时间hwclock --set --date "2018-2-22 19:10:30"同步系统时间和硬件时间hwclock --hctosys保存时钟clock –w1.设置NTP Server服务检查系统是否安装n…...

毕业设计基于SpringMVC+Mybatis+Bootstrap的电影院管理系统源码+数据库

<<电影院管理系统>> 电影院管理系统&#xff1a;SpringMVCJSPTomcatMybatisBootstrapJqueryAnimateCSSLayerJS 项目部署&#xff1a;该项目是IDEA版本&#xff0c;Maven项目 前端依赖&#xff1a; Bootstrap-3.4.1Animate.css- 4.1.1Jquery-3.6.0Layer-v3.5.1B…...

vantUI(Tabbar标签页)浏览器返回上一页的失效问题

在开发中遇到这样一个问题&#xff0c;由页面1切换到页面2&#xff0c;再点击浏览器的回退&#xff0c;无法回退到页面1。 开始以为是路由配置的有问题&#xff0c;但是子页面可以正常回退&#xff0c;因为replace只是替换路由&#xff0c;而不会往history栈中记录路由&#x…...

【算法】Prim算法(求最小生成树)

题目 给定一个 n 个点 m 条边的无向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 求最小生成树的树边权重之和&#xff0c;如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E)&#xff0c;其中 V 表示图中点的集合&#xff0c;E…...

go语言,yaml实现简单的workflow工作流

目录 1.创建一个yaml文件&#xff0c;名字可以是student.yaml 2.创建go文件测试 3.执行结果 本文章内容&#xff0c;只是一个简单的案例&#xff0c;但足够映射到一个大的项目中。 工作流作用&#xff1a;工作流的作用就是通过yaml配置文件&#xff0c;将关于本工作流的一个…...

BaiduMallServcie

说明 本文档指导业务开发步骤 BaiduMallServcie 说明一. 登录业务1.1 数据库设计1.1.1 管理员表1.1.2 角色表1.1.3 关联表 管理员表与角色表关联1.1.4 权限表1.1.5 关联表 角色表与权限表关联1.1.6 管理员登录日志表1.1.7 查询权限示例1.2 添加用户一. 登录业务 1.1 数据库设…...

vue3+jsx+antd的插槽写法之一

如果在jsx里面直接这样按照官方的写法是会报错的 正确写法是&#xff1a;...

Shell 学习之 if 命令

1. 执行流程 在 Shell 脚本中&#xff0c;if 是一个 控制流语句&#xff0c;用于进行条件判断&#xff0c;根据条件的结果执行相应的操作。 # 首先&#xff0c;Shell 会检查表达式 condition 返回的 boolean 值。 # 如果 condition 的值为真&#xff0c;则执行 then 代码块&a…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...