vue-11(命名路由和命名视图)
命名路由和命名视图
命名路由和命名视图提供了组织和导航 Vue.js 应用程序的强大方法,尤其是在它们的复杂性增加时。它们提供了一种语义更合理、可维护的路由方法,使您的代码更易于理解和修改。命名路由允许您按名称引用路由,而不是依赖 URL,而命名视图允许您根据当前路由在页面的不同部分呈现多个组件。本课将详细探讨这些概念,为您提供在 Vue.js 项目中有效使用它们的知识和技能。
命名路由
命名路由提供了一种为应用程序中的每个路由分配唯一名称的方法。这允许您使用路由的名称而不是 URL 导航到路由,从而使您的代码更具可读性和可维护性。如果 URL 结构发生更改,则只需更新路由定义,并且按名称对该路由的所有引用都将自动更新。
定义命名路由
要定义命名路由,只需向路由配置对象添加 name
属性即可。
const routes = [{path: '/users/:id',name: 'user', // This is the named routecomponent: User,},{path: '/about',name: 'about',component: About,},
];
在此示例中,我们定义了两个命名路由:user
和 about
。 用户
路由还包括一个动态段 :id
。
使用命名路由导航
一旦你定义了一个命名路由,你就可以使用它通过 router.push()
以编程方式导航,或者在你的模板中使用 <router-link>
。
编程导航:
// Assuming you have access to the router instance (e.g., this.$router)
this.$router.push({ name: 'user', params: { id: 123 } });
在这里,我们将导航到 id
参数设置为 123
的用户
路由。
使用 <router-link>
导航:
<router-link :to="{ name: 'user', params: { id: 456 } }">Go to User 456</router-link>
<router-link :to="{ name: 'about' }">About Us</router-link>
<router-link>
组件会根据命名路由及其参数自动生成正确的 URL。
使用命名路由的好处
- 可读性: 使用名称而不是 URL 可以使您的代码更易于理解。
- 可维护性: 如果更改 URL,则只需更新路由定义,而无需更新使用该 URL 的每个实例。
- 灵活性: 命名路由可以更轻松地重构应用程序和更改 URL 结构,而不会破坏现有导航。
示例:电子商务应用程序
考虑一个带有产品页面的电子商务应用程序。您可以使用命名路由,而不是对产品页面 URL 进行硬编码:
const routes = [{path: '/products/:productId',name: 'product',component: ProductDetails,},
];
现在,要导航到特定的产品页面:
<router-link :to="{ name: 'product', params: { productId: product.id } }">{{ product.name }}</router-link>
如果您稍后决定将产品页面 URL 更改为 /item/:p roductId
,则只需更新路由定义,使用名为 route 的产品
的所有链接都将自动更新。
示例:博客应用程序
在博客应用程序中,您可能有用于单个博客文章的路由。使用命名路由可以简化链接到这些文章的过程:
const routes = [{path: '/posts/:postId',name: 'post',component: BlogPost,},
];
链接到特定的博客文章:
<router-link :to="{ name: 'post', params: { postId: post.id } }">{{ post.title }}</router-link>
练习:在简单应用程序中实现命名路由
- 使用 Vue CLI 创建一个新的 Vue.js 项目。
- 定义三个组件:
主页
、产品和``联系人
。 - 创建
router.js
文件并为每个零部件定义路由,分配home
、products
和contact
等名称。 - 在
App.vue
文件中,使用带有命名路由的<router-link>
组件创建指向每个页面的导航链接。 - 为产品详细信息 (
/products/:id
) 添加名称为product-detail
的动态路由。 - 在
Products
组件中,创建一个产品列表,并使用<router-link>
和product-detail
命名路由链接到每个产品的详细信息页面。
命名视图
命名视图允许您在单个线路中同时显示多个零部件。这对于创建具有多个部分的布局(如侧边栏、主内容区域和页脚)非常有用。
定义命名视图
要定义命名视图,请在路由配置中使用 components
选项,而不是 component
选项。components
选项是一个对象,其中每个键是视图的名称,每个值是要在该视图中呈现的组件。
const routes = [{path: '/dashboard',components: {default: Dashboard, // The default viewsidebar: Sidebar,notifications: Notifications,},},
];
在此示例中,我们定义了三个命名视图:default
、sidebar
和 notifications
。 默认
视图在 <router-view>
中呈现,没有 name
属性,而其他视图在 <router-view>
组件中呈现,具有相应的 name
属性。
渲染命名视图
要渲染命名视图,您需要在模板中使用多个 <router-view>
组件,每个组件都有一个与要渲染的视图名称匹配的 name
属性。
<template><div><header><h1>Dashboard</h1></header><div class="container"><aside><router-view name="sidebar"></router-view></aside><main><router-view></router-view> <!-- Default view --></main><aside><router-view name="notifications"></router-view></aside></div><footer><p>© 2023</p></footer></div>
</template>
在此示例中, 边栏
组件将呈现在 <router-view name=“sidebar”>
中, 仪表板
组件(默认视图)将呈现在 <router-view>
中, 通知
组件将呈现在 <router-view name="notifications">
.
使用命名视图的好处
- 布局灵活性: 命名视图允许您创建同时呈现多个组件的复杂布局。
- 代码组织: 它们通过将页面的不同部分分离到单独的组件中来帮助您组织代码。
- 可 重用: 您可以通过将相同的组件分配给不同的命名视图,在不同的布局中重用这些组件。
示例:管理员面板
考虑一个带有侧边栏、主要内容区域和通知部分的管理面板。您可以使用命名视图来构建此布局:
const routes = [{path: '/admin',components: {default: AdminDashboard,sidebar: AdminSidebar,notifications: AdminNotifications,},},
];
模板将如下所示:
<template><div class="admin-layout"><aside class="sidebar"><router-view name="sidebar"></router-view></aside><main class="content"><router-view></router-view></main><aside class="notifications"><router-view name="notifications"></router-view></aside></div>
</template>
示例:具有多个部分的应用程序
假设有一个应用程序,其中包含页眉、主要内容和页脚。命名视图可以帮助构建此结构:
const routes = [{path: '/app',components: {header: AppHeader,default: AppContent,footer: AppFooter,},},
];
模板:
<template><div class="app-layout"><header><router-view name="header"></router-view></header><main class="content"><router-view></router-view></main><footer><router-view name="footer"></router-view></footer></div>
</template>
练习:在 Dashboard 应用程序中实现命名视图
- 从上一个练习扩展项目。
- 创建 3 个组件:
DashboardContent
、DashboardSidebar
和DashboardNotifications
。 - 为
/dashboard
创建路由,并使用命名视图在具有侧边栏、主内容区域和通知部分的布局中呈现这些组件。 - 在
App.vue
文件中,添加具有适当name
属性的<router-view>
组件来渲染命名视图。 - 使用 CSS 设置布局样式,以创建具有视觉吸引力的仪表板。
组合命名路由和命名视图
您可以组合命名路由和命名视图,以创建更加灵活和可维护的路由配置。这允许您导航到特定布局,其中多个组件使用路由名称同时呈现。
示例:组合命名路由和命名视图
const routes = [{path: '/admin/users',name: 'admin-users',components: {default: AdminUsers,sidebar: AdminSidebar,notifications: AdminNotifications,},},
];
现在,你可以使用 admin-users
命名 route 导航到此布局:
<router-link :to="{ name: 'admin-users' }">Manage Users</router-link>
此方法提供了一种清晰简洁的方式来导航到具有多个组件的复杂布局。
相关文章:
vue-11(命名路由和命名视图)
命名路由和命名视图 命名路由和命名视图提供了组织和导航 Vue.js 应用程序的强大方法,尤其是在它们的复杂性增加时。它们提供了一种语义更合理、可维护的路由方法,使您的代码更易于理解和修改。命名路由允许您按名称引用路由,而不是依赖 URL…...
(附代码)自定义 LangChain 文档分割器,深入探索 LangChain 文档分割策略与应用
自定义文档分割器 在 LangChain 中,如果内置的文档分割器均没办法完成需求,还可以根据特定的需求实现自定义文档分割器(一般极少),实现的方法也非常简单,继承文本分割器基类 TextSplitter,在构造…...

Python打卡训练营Day42
DAY 42 Grad-CAM与Hook函数 知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业:理解下今天的代码即可 import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as tr…...

基于微信小程序的scratch学习系统
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言࿰…...
MATLAB实战:机器学习分类回归示例
以下是一个使用MATLAB的Statistics and Machine Learning Toolbox实现分类和回归任务的完整示例代码。代码包含鸢尾花分类、手写数字分类和汽车数据回归任务,并评估模型性能。 %% 加载内置数据集 % 鸢尾花数据集(分类) load fisheriris; X_i…...
动态库导出符号与extern “C“
1. windows下动态库导出符号 根据C/C语法规则,函数声明中的修饰符(如__declspec(dllexport))可以放在返回类型之前或返回类型之后、函数名之前。这两种方式在功能上是等价的,编译器会以相同的方式处理。 __declspec(dllexport) …...
小知识:STM32 printf 重定向(串口输出)--让数据 “开口说话” 的关键技巧
引言 在 C 语言开发中,printf函数是我们调试程序、输出数据的得力助手,它能将格式化的数据输出到标准输出设备(通常是屏幕)。然而,在嵌入式领域,STM32 单片机并没有默认的显示设备,要让printf函…...
`docker commit` 和 `docker save`区别
理解 docker commit 和 docker save 之间的区别对于正确管理 Docker 镜像非常重要。让我们详细解释一下这两个命令的作用及其区别。 1. docker commit 作用: docker commit roop-builder roop:v1 命令的作用是基于一个正在运行的容器 roop-builder 创建一个新的镜…...

【C++ 多态】—— 礼器九鼎,釉下乾坤,多态中的 “风水寻龙诀“
欢迎来到一整颗红豆的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由一整颗红豆原创✍️,感谢支持❤️!请尊重原创…...

SCSAI平台面向对象建模技术的设计与实现
一、核心设计思想 SCSAI平台的核心目标是通过元建模(Meta-Modeling)技术实现面向对象建模的零编码化。其核心思想为: 自反性设计:定义ObjectClassInfo (OCI)为元类(Meta-Class),所有对象类均为…...

pikachu通关教程-CSRF
CSRF(get) 用bp进行抓包 选择action value值的修改 点击test in browser copy然后放在bp代理的浏览器上,会出现一个提交按钮,这时候点击之后信息就被修改了。 CSRF(post) 请求的方式不同,其他都是一样 CSRF Token 存在cookie 首先要先下载一…...

智能体觉醒:AI开始自己“动手”了-自主进化开启任务革命时代
1. 智能体:AI从“工具”到“伙伴”的关键跃迁 1.1 什么是智能体? 智能体(Agent)是AI的“进化版”——它不再局限于生成文字或图像,而是能像人类一样“规划任务”“调用工具”甚至“协同合作”。例如,一个…...
Python爬虫实战:研究Aiohttp库相关技术
1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网络上的数据量呈爆炸式增长。爬虫作为一种自动获取网络信息的工具,在数据挖掘、信息检索、舆情分析等领域有着广泛的应用。传统的同步爬虫在面对大量 URL 时效率低下,无法充分利用现代计算机的多核资源和网络带宽。而异…...

【C++指南】C++ list容器完全解读(二):list模拟实现,底层架构揭秘
. 💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 文章目录 引言一、链表节点设计:双向链表的基石1.1 节点类的实现 二、list框架与核心成员函…...

[神经网络]使用olivettiface数据集进行训练并优化,观察对比loss结果
结合归一化和正则化来优化网络模型结构,观察对比loss结果 搭建的神经网络,使用olivettiface数据集进行训练,结合归一化和正则化来优化网络模型结构,观察对比loss结果 from sklearn.datasets import fetch_olivetti_faces #倒入数…...
小明的Java面试奇遇之智能家装平台架构设计与JVM调优实战
一、文章标题 小明的Java面试奇遇之智能家装平台架构设计与JVM调优实战 二、文章标签 Java面试, 智能家装, 微服务架构, 高并发设计, JVM调优, SpringCloud, 消息队列, 分布式缓存, 架构设计, 面试技巧 三、文章概述 本文模拟了程序员小明应聘智能家装平台后端架构师的5轮…...
n8n:技术团队的智能工作流自动化助手
在当前数字化时代,自动化已经成为提高效率和减轻人工工作负担的一大推动力。今天,我们要为大家介绍一款极具潜力的开源项目——n8n,它不仅拥有广泛的应用场景,还具备内置AI功能,能够完全满足技术团队的高效工作需求。n8n的出现,为技术团队提供了自由编程与快速自动化构建…...
Flink 核心机制与源码剖析系列
Flink 核心机制与源码剖析系列 目录 第一篇:Flink 状态管理原理与源码深度剖析第二篇:水位线、事件时间与定时器源码全流程第三篇:Flink CEP 模式建模与高效事件匹配机制 第一篇:Flink 状态管理原理与源码深度剖析 1. 背景与意…...

华院计算出席信创论坛,分享AI教育创新实践并与燧原科技共同推出教育一体机
5月21日,信创论坛于上海漕河泾会议中心举办。本次论坛以“聚力融合,繁荣生态”为主题,话题聚焦工业制造、交通运输、金融、教育、医疗等领域。华院计算技术(上海)股份有限公司(以下简称“华院计算”&#x…...

华为OD机试真题——会议接待 /代表团坐车(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《会议…...

LabVIEW Val (Sgnl) 属性
在 LabVIEW 事件驱动架构中,Val (Sgnl) 属性(Value (Signaling))是实现编程触发与用户交互行为一致性的关键技术。与普通 Value 属性不同,Val (Sgnl) 在修改控件值的同时强制生成值改变事件,确保程序逻辑与 UI 交互保持…...

STM32G4 电机外设篇(三) TIM1 发波 和 ADC COMP DAC级联
目录 一、STM32G4 电机外设篇(三) TIM1 发波 和 ADC COMP DAC级联1 TIM1 高级定时器发波1.1 stm32cubemx配置 2 TIM1 ADC COMP DAC级联2.1 stm32cubemx配置 附学习参考网址欢迎大家有问题评论交流 (* ^ ω ^) 一、STM32G4 电机外设篇(三&…...

DAY 35 超大力王爱学Python
知识点回顾: 三种不同的模型可视化方法:推荐torchinfo打印summary权重分布可视化进度条功能:手动和自动写法,让打印结果更加美观推理的写法:评估模式 作业:调整模型定义时的超参数,对比下效果。…...

【数据结构】图的存储(十字链表)
弧节点 tailvex数据域:存储弧尾一端顶点在顺序表中的位置下标;headvex 数据域:存储弧头一端顶点在顺序表中的位置下标;hlink 指针域:指向下一个以当前顶点作为弧头的弧;tlink 指针域:指向下一个…...
005 flutter基础,初始文件讲解(4)
书接上回,今天继续完成最后的讲解: class _MyHomePageState extends State<MyHomePage> {int _counter 0;void _incrementCounter() {setState(() {_counter;});}可以看到,这里的_MyHomePageState是一个类,继承于 State&l…...

Redis最佳实践——秒杀系统设计详解
基于Redis的高并发秒杀系统设计(十万级QPS) 一、秒杀系统核心挑战 瞬时流量洪峰:100万 QPS请求冲击库存超卖风险:精准扣减防止超卖系统高可用性:99.99%服务可用性要求数据强一致性:库存/订单/支付状态同步…...

STM32软件spi和硬件spi
核心观点 本文主要介绍了SPI通信的两种实现方式:软件SPI和硬件SPI。详细阐述了SPI通信协议的基本概念、硬件电路连接方式、移位示意图、时序基本单元以及四种工作模式。同时,对W25Q64模块进行了详细介绍,包括其硬件电路、框图以及操作注意事…...
MATLAB实战:人脸检测与识别实现方案
我们要用电脑识别照片或视频中的人脸,并知道是谁的脸。就像手机相册能自动识别照片里的人是谁一样。 🔍 人脸检测(找脸) 目标:在图片中找到人脸的位置 怎么做: 用MATLAB的"人脸扫描仪"ÿ…...

深度刨析树结构(从入门到入土讲解AVL树及红黑树的奥秘)
目录 树的表示 二叉树的概念及结构(重点学习) 概念 : 特点: 树与非树 特殊的二叉树 二叉树的性质(重点) 二叉树的存储结构 堆的概念及结构 建堆方式: 向下调整算法 向上调整算法 建堆第一步初始化 建…...

【Linux】shell的条件判断
目录 一.使用逻辑运算符判定命令执行结果 二.条件判断方法 三.判断表达式 3.1文件判断表达式 3.2字符串测试表达式 3.3整数测试表达式 3.4逻辑操作符 一.使用逻辑运算符判定命令执行结果 && 在命令执行后如果没有任何报错时会执行符号后面的动作|| 在命令执行后…...