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

Next.js系统性教学:动态路由与并行路由

 更多有关Next.js教程,请查阅:

【目录】Next.js 独立开发系列教程-CSDN博客


目录

1. 动态路由 (Dynamic Routes)

1.1 动态路由的基础

1.2 获取动态参数

1.3 动态嵌套路由

1.4 捕获所有动态路由

2. 并行路由 (Parallel Routes)

2.1 并行路由的基础概念

2.2 定义并行路由

2.3 并行路由内容

2.4 并行路由的使用场景

3. 动态路由与并行路由的结合

4. 总结

 独立开发系列文章目录

Next.js系统性学习系列文章目录


Next.js 是一个强大、灵活的框架,其路由功能为构建现代化 Web 应用提供了丰富的支持。本文将深入探讨 动态路由并行路由 的实现和使用场景,帮助开发者掌握这些高级路由技巧。


1. 动态路由 (Dynamic Routes)

动态路由允许开发者基于变量(如用户 ID、文章标题等)生成动态页面,极大增强了应用的灵活性。

1.1 动态路由的基础

app 目录中,动态路由通过方括号 [ ] 声明,例如 [id]。每个动态路由文件都会映射到一个路径参数。

目录结构:

app/
├── blog/
│   ├── [id]/
│   │   ├── page.js

上述结构会生成路径 /blog/:id,其中 :id 是动态变量。

示例代码:app/blog/[id]/page.js

export default function BlogPost({ params }) {const { id } = params;return (<main><h1>文章 ID: {id}</h1><p>这是文章 {id} 的内容。</p></main>);
}
  • params 对象包含路径中的动态变量。
  • 访问 /blog/123 时,页面会渲染文章 ID 为 123 的内容。

1.2 获取动态参数

在页面中可以通过 params 获取动态路径的参数。假设路径为 /blog/[id]

export default function BlogPost({ params }) {return <h1>文章 ID: {params.id}</h1>;
}

动态参数可以用来获取数据,或根据路径呈现不同内容。


1.3 动态嵌套路由

动态路由可以嵌套使用,适合组织多层级数据。

目录结构:

app/
├── users/
│   ├── [userId]/
│   │   ├── settings/
│   │   │   ├── page.js

此结构支持路径 /users/:userId/settings,例如 /users/42/settings

示例代码:app/users/[userId]/settings/page.js

export default function UserSettings({ params }) {return <h1>用户 {params.userId} 的设置</h1>;
}

这种方式简化了复杂路由结构的管理。


1.4 捕获所有动态路由

Next.js 提供 [...param] 捕获所有动态路由,适合用来处理未知路径。

目录结构:

app/
├── catch-all/
│   ├── [...slug]/
│   │   ├── page.js

路径 /catch-all/first/second 会映射到 [...slug]/page.jsslug 会包含 ['first', 'second']

示例代码:app/catch-all/[...slug]/page.js

export default function CatchAll({ params }) {return <h1>路径参数: {params.slug.join("/")}</h1>;
}

2. 并行路由 (Parallel Routes)

并行路由是一种强大的工具,允许开发者在页面中呈现多个同时加载的路由内容。这非常适合在同一页面中呈现不同来源或区域的内容。

2.1 并行路由的基础概念

在并行路由中,路由以命名插槽的形式呈现。插槽允许不同路由内容以并行方式加载到同一布局中。

目录结构:

app/
├── dashboard/
│   ├── layout.js
│   ├── @analytics/
│   │   ├── page.js
│   ├── @settings/
│   │   ├── page.js
  • @analytics@settings 是并行路由的命名插槽。
  • 插槽内容会渲染到 layout.js 中定义的位置。

2.2 定义并行路由

通过在 layout.js 中指定插槽位置,开发者可以灵活控制并行路由的显示。

示例代码:app/dashboard/layout.js

export default function DashboardLayout({ analytics, settings }) {return (<main><section>{analytics}</section><section>{settings}</section></main>);
}
  • analyticssettings 对应各自的并行路由内容。
  • 页面会并行加载 @analytics/page.js@settings/page.js

2.3 并行路由内容

每个插槽可以独立渲染自己的内容,同时继承上层布局。

示例代码:app/dashboard/@analytics/page.js

export default function Analytics() {return <h1>分析面板</h1>;
}

示例代码:app/dashboard/@settings/page.js

export default function Settings() {return <h1>设置面板</h1>;
}

最终页面会同时呈现两部分内容。


2.4 并行路由的使用场景

  • 仪表盘设计:在一个页面中展示不同的统计数据、图表或用户设置。
  • 内容展示:同时加载文章正文与评论区域。
  • 后台管理:让多个管理模块并行加载,提升操作效率。

3. 动态路由与并行路由的结合

动态路由和并行路由可以结合使用,构建灵活的多层级应用。

目录结构:

app/
├── dashboard/
│   ├── [userId]/
│   │   ├── layout.js
│   │   ├── @analytics/
│   │   │   ├── page.js
│   │   ├── @settings/
│   │   │   ├── page.js

此结构支持路径 /dashboard/:userId,其中包含并行的 @analytics@settings 插槽。

示例代码:app/dashboard/[userId]/layout.js

export default function UserDashboardLayout({ children, analytics, settings }) {return (<main><header>用户 {children} 的仪表盘</header><section>{analytics}</section><section>{settings}</section></main>);
}

4. 总结

  • 动态路由 提供灵活的路径处理能力,适合用来构建基于变量的页面内容。
  • 并行路由 则更适合复杂页面,支持同时加载多个内容区域,提升性能与用户体验。
  • 结合使用动态路由与并行路由,可以设计出功能强大、体验流畅的现代 Web 应用。

通过熟练掌握这些特性,您将能最大化地发挥 Next.js 路由系统的威力,为用户提供更加高效和出色的应用体验。

 更多有关Next.js教程,请查阅:

【目录】Next.js 独立开发系列教程-CSDN博客

相关文章:

Next.js系统性教学:动态路由与并行路由

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 1. 动态路由 (Dynamic Routes) 1.1 动态路由的基础 1.2 获取动态参数 1.3 动态嵌套路由 1.4 捕获所有动态路由 2. 并行路由 (Parallel Routes) 2.1 并行路由的基础…...

Backblaze 2024 Q3硬盘故障质量报告解读

作为一家在2021年在美国纳斯达克上市的云端备份公司&#xff0c;Backblaze一直保持着对外定期发布HDD和SSD的故障率稳定性质量报告&#xff0c;给大家提供了一份真实应用场景下的稳定性分析参考数据&#xff1a; 以往报告解读系列参考&#xff1a; Backblaze发布2024 Q2硬盘故障…...

[创业之路-179]:《领先的密码 - BLM核心方法体系与企业实践》主要章节与主要内容

目录 前言&#xff1a; 1、引言或概述 2、BLM方法论的背景与起源 3、BLM方法论的发展与完善 4、BLM方法论的重要性与价值 5、本书的内容与结构 二、BLM核心方法体系 1. 领先的起点 2. 领先的战略 3. 领先的执行 4. 领先之魂 三、本书的核心思想 1、以战略为核心 …...

uniapp的生命周期

在 UniApp 中&#xff0c;生命周期函数是指在组件&#xff08;如页面、视图等&#xff09;创建和销毁过程中会自动触发的一些函数。UniApp 提供了多种生命周期函数&#xff0c;帮助开发者在适当的时机进行相关的逻辑处理。 UniApp 的生命周期函数可以分为 页面生命周期 和 组件…...

基于 RNN(GRU, LSTM)+CNN 的红点位置检测(pytorch)

文章目录 1 项目背景2 数据集3 思路4 实验结果5 代码 1 项目背景 需要在图片精确识别三跟红线所在的位置&#xff0c;并输出这三个像素的位置。 其中&#xff0c;每跟红线占据不止一个像素&#xff0c;并且像素颜色也并不是饱和度和亮度极高的红黑配色&#xff0c;每个红线放大…...

L2G3000-LMDeploy 量化部署实践

文章目录 LMDeploy 量化部署实践闯关任务环境配置W4A16 量化 KV cacheKV cache 量化Function call LMDeploy 量化部署实践闯关任务 环境配置 conda create -n lmdeploy python3.10 -y conda activate lmdeploy conda install pytorch2.1.2 torchvision0.16.2 torchaudio2.1.…...

verilog编程规范

verilog编程规范 文章目录 verilog编程规范前言一、代码划分二、verilog编码ABCDEFG 前言 高内聚&#xff0c;低耦合&#xff0c;干净清爽的代码 一、代码划分 高内聚&#xff1a; 一个功能一个模块干净的接口提取公共的代码 低耦合&#xff1a; 模块之间低耦合尽量用少量…...

飞飞5.4游戏源码(客户端+服务端+工具完整源代码+5.3fix+5.4patch+数据库可编译进游戏)

飞飞5.4游戏源码&#xff08;客户端服务端工具完整源代码5.3fix5.4patch数据库可编译进游戏&#xff09; 下载地址&#xff1a; 通过网盘分享的文件&#xff1a;【源码】飞飞5.4游戏源码&#xff08;客户端服务端工具完整源代码5.3fix5.4patch数据库可编译进游戏&#xff09; 链…...

【MySQL】——​​用一文领悟表的增删查改

目录 前言 &#x1f343;1.表的增加 &#x1f359;1.1增——insert &#x1f359;1.2插入否则更新 &#x1f364;1.2.1影响行说明 &#x1f342;2.表的查询 &#x1f358;2.1查询——select &#x1f358;2.2特殊表查询 &#x1f365;2.2.1添加表达式 &#x1f365;…...

Zabbix监控Oracle 19c数据库完整配置指南

Zabbix监控Oracle 19c数据库完整配置指南 本文将详细介绍如何使用Zabbix配置Oracle 19c数据库监控&#xff0c;包括安装、配置、问题排查等全过程。本指南适合新手独立完成配置。 1. 环境准备 1.1 系统要求 Oracle 19c数据库服务器Zabbix服务器&#xff08;版本5.0或更高&a…...

静态路由与交换机配置实验

1.建立网络拓扑 添加2台计算机&#xff0c;标签名为PC0、PC1&#xff1b;添加2台二层交换机2960&#xff0c;标签名为S0、S1&#xff1b;添加2台路由器2811&#xff0c;标签名为R0、R1&#xff1b;交换机划分的VLAN及端口根据如下拓扑图&#xff0c;使用直通线、DCE串口线连接…...

【jvm】讲讲jvm中的gc

目录 1. 说明2. 主要算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法3. 主要回收器3.1 Serial GC3.2 Parallel GC3.3 CMS&#xff08;Concurrent Mark-Sweep&#xff09;GC3.4 G1&#xff08;Garbage-First&#xff09;GC 4. 触发条件4.1 Minor GC&#xff08;Young GC&am…...

openlayers地图事件

OpenLayers是一个开源的JavaScript库&#xff0c;用于在Web上创建交互式地图。它提供了许多地图事件&#xff0c;使用户可以与地图进行交互。以下是OpenLayers常用的地图事件&#xff1a; 1. click&#xff1a;当用户单击地图时触发该事件。 2. dblclick&#xff1a;当用户双…...

杂记9---一些场景git操作汇总

背景&#xff1a;不同项目需求&#xff0c;所需要git操作集合&#xff0c;不太一样&#xff0c;这里汇总记录一下。 场景1&#xff1a;给本地项目添加到远程仓库的新建分支上 把本地节点保存在自己库的一个分支&#xff1a; git init git remote add origin xxx.git 远程仓库…...

Mysql索引,聚簇索引,非聚簇索引,回表查询

什么是索引 数据库索引是为了实现高效数据查询的一种有序的数据数据结构&#xff0c;类似于书的目录&#xff0c;通过目录可以快速的定位到想要的数据&#xff0c;因为一张表中的数据会有很多&#xff0c;如果直接去表中检索数据效率会很低&#xff0c;所以需要为表中的数据建立…...

【优选算法 二分查找】二分查找算法入门详解:二分查找小专题

x 的平方根 题目解析 算法原理 解法一&#xff1a; 暴力解法 如果要求一个数(x)的平方根&#xff0c;可以从 0 往后枚举&#xff0c;直到有一个数(a)&#xff0c;a^2<x&#xff0c;(a1)^2>x&#xff0c;a即为所求&#xff1b; 解法二&#xff1a;二分查找 …...

如何将CSDN博客下载为PDF文件

1.打开CSDN文章内容 2.按键盘上的f12键&#xff08;或者右键—审查元素&#xff09;进入浏览器调试模式&#xff0c;点击控制台&#xff08;Console&#xff09;进入控制台 3.在控制台输入以下代码&#xff0c;回车 4.在弹出的打印页面中将布局设置成横向&#xff0c;纵向会…...

pdf转word/markdown等格式——MinerU的部署:2024最新的智能数据提取工具

一、简介 MinerU是开源、高质量的数据提取工具&#xff0c;支持多源数据、深度挖掘、自定义规则、快速提取等。含数据采集、处理、存储模块及用户界面&#xff0c;适用于学术、商业、金融、法律等多领域&#xff0c;提高数据获取效率。一站式、开源、高质量的数据提取工具&…...

2024年下半年网络工程师案例分析真题及答案解析

2024年下半年网络工程师案例分析真题及答案解析 试题一(15分) [说明] 公司为某科技园区的不同企业提供网络服务,不同企业的业务有所不同,每个企业因业务需要在不同的地点有多个分支机构。其拓扑结构如图1所示。企业用户通过楼层接入交换机、楼栋汇聚交换机和区域交换机接…...

English phonetic symbol

英语音标发音表-英语48个音标在线读 (jiwake.com) 【英语音标教程】从此学会国际音标|英式音标|BBC音标教程全解_哔哩哔哩_bilibili 元音 单元音 /iː/,/ɪ/ 这两个音不是发音长短的区别&#xff0c; /uː/ /ʊ/ 上面那个就正常读&#xff0c;下面那个她的气大概是往你斜…...

OpenClaw+nanobot日程管理:自然语言输入转日历事件

OpenClawnanobot日程管理&#xff1a;自然语言输入转日历事件 1. 为什么需要自然语言日程管理 作为一个经常被各种会议和截止日期追着跑的技术从业者&#xff0c;我一直在寻找更高效的日程管理方式。传统的日历应用需要手动填写时间、地点、标题等字段&#xff0c;操作繁琐且…...

RWKV7-1.5B-g1a实操手册:curl命令调用generate接口+参数组合避坑指南

RWKV7-1.5B-g1a实操手册&#xff1a;curl命令调用generate接口参数组合避坑指南 1. 模型简介 rwkv7-1.5B-g1a 是基于RWKV-7架构的多语言文本生成模型&#xff0c;特别适合以下场景&#xff1a; 基础问答文案续写简短总结轻量中文对话 这个1.5B参数的版本在单卡24GB显存的GPU…...

终极指南:用WinDiskWriter在Mac上制作Windows启动盘,简单三步搞定

终极指南&#xff1a;用WinDiskWriter在Mac上制作Windows启动盘&#xff0c;简单三步搞定 【免费下载链接】windiskwriter &#x1f5a5; A macOS app that creates bootable USB drives for Windows. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot require…...

Android Hook应用开发实战:从入门到精通LSPosed框架

Android Hook应用开发实战&#xff1a;从入门到精通LSPosed框架 【免费下载链接】LSPosed_mod My changes to LSPosed 项目地址: https://gitcode.com/GitHub_Trending/ls/LSPosed_mod 一、技术背景&#xff1a;为什么需要Android钩子技术 理解钩子技术的核心价值 钩子…...

YOLOv8实战:Anchor-Free与Anchor-Based到底怎么选?附完整对比实验代码

YOLOv8技术选型指南&#xff1a;Anchor-Free与Anchor-Based深度对比与实战决策 在目标检测领域的技术选型过程中&#xff0c;工程师们常常面临一个关键抉择&#xff1a;是采用传统的Anchor-Based方法&#xff0c;还是转向新兴的Anchor-Free架构&#xff1f;这个看似简单的选择背…...

百度网盘提取码智能获取工具:3秒解锁任何分享资源的终极方案

百度网盘提取码智能获取工具&#xff1a;3秒解锁任何分享资源的终极方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾遇到过这样的场景&#xff1f;好不容易找到一个急需的学习资源&#xff0c;点击百度网盘链接后…...

s2-pro音色复用效果实测:同一参考音频在不同文本长度下的泛化能力

s2-pro音色复用效果实测&#xff1a;同一参考音频在不同文本长度下的泛化能力 1. 测试背景与目的 s2-pro作为Fish Audio开源的专业级语音合成模型镜像&#xff0c;其核心亮点之一是支持通过参考音频复用音色。这项功能在实际应用中极为实用&#xff0c;比如&#xff1a; 企业…...

StructBERT中文相似度模型GPU算力适配:显存占用峰值218MB,预留缓冲空间充足

StructBERT中文相似度模型GPU算力适配&#xff1a;显存占用峰值218MB&#xff0c;预留缓冲空间充足 1. 项目概述 StructBERT中文相似度计算工具是一个基于百度先进大模型技术的高精度语义匹配系统。这个工具能够智能分析两个中文句子之间的语义相似程度&#xff0c;为各类文本…...

别再让串口指示灯‘瞎闪’了!手把手教你用LM358运放做个‘聪明’的LED驱动电路

别再让串口指示灯‘瞎闪’了&#xff01;手把手教你用LM358运放做个‘聪明’的LED驱动电路 调试串口通信时&#xff0c;最让人头疼的莫过于那些"瞎闪"的指示灯——波特率一高&#xff0c;LED就像得了癫痫&#xff0c;微弱的光斑根本分不清是发送还是接收。我曾在一个…...

Stable Yogi Leather-Dress-Collection实战:SpringBoot微服务集成与API开发

Stable Yogi Leather-Dress-Collection实战&#xff1a;SpringBoot微服务集成与API开发 最近在帮一个做时尚电商的朋友做技术方案&#xff0c;他们想在自己的商品详情页里&#xff0c;根据用户上传的真人照片&#xff0c;实时生成虚拟试穿效果。核心需求很明确&#xff1a;需要…...