Skip to content
This repository was archived by the owner on Mar 1, 2025. It is now read-only.

Commit b42795e

Browse files
Merge pull request #16 from xszhangxiaocuo/main
day6:Next.js路由
2 parents 45ffac8 + a93065d commit b42795e

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

Hoshino_FullStack_Compass.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,48 @@ export default function HomePage() {
264264
}
265265
```
266266

267+
### 02.23
267268

269+
今天主要看了Next.js的路由怎么配置。
270+
271+
Next.js 采用了基于文件系统的路由机制,其中浏览器中的 URL 路径是由代码库中的文件夹及文件位置决定的。遵循约定对于正确实用路由功能至关重要。通过创建嵌套的文件夹结构,Next.js 自动路由到指定文件。这简化了创建嵌套路由的过程,并增强了应用程序的组织和结构。
272+
273+
`[]`包裹的文件夹表示动态路由。Next.js会自动渲染路由对应文件夹下的`page.txs`页面。
274+
275+
![img](https://minio.drivefly.cn:443/image-hoshino/blog/2025/02/23/4a3e4caa59ae450e9539ad9e696b7d88~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp)
276+
277+
动态路由可以利用每个页面中提供的 `params` 对象来获取动态路由的值。
278+
279+
```tsx
280+
export default function ProductDetail({
281+
params,
282+
}: {
283+
params: { productId: string };
284+
}) {
285+
return <h1>Details about product {params.productId}</h1>;
286+
}
287+
```
288+
289+
对于嵌套的动态路由,也可以在路由对应的`page.txs`中通过`params`来获取所有的路由参数。
290+
291+
```tsx
292+
export default function ProductDetail({
293+
params,
294+
}: {
295+
params: { productId: string; reviewId: string };
296+
}) {
297+
return (
298+
<h1>
299+
Review {params.reviewId} for product {params.productId}
300+
</h1>
301+
);
302+
}
303+
```
304+
305+
Next.js 提供了 catch-all segments(捕获所有路由段)功能,允许灵活地使用路由。假设我们想创建一个文档站点,其中包含多个功能和概念,每个概念都有自己独特的路由。我们可以使用 catch-all segments 路由来代替为每个路由创建单独文件。
306+
307+
路由组允许在不影响 URL 结构的情况下对路由和文件进行逻辑分组(logical grouping)。可以通过将文件夹放入圆括号中来创建:`(folderName)`。例如,`(auth)/register``(auth)/login``(auth)/forgot-password` 可以通过 `/register``/login``/forgot-password` 访问。使用 `auth` 路由组可以更有效地组织路由。
308+
309+
Next.js 中还提供了私有文件夹功能,只需在文件夹名称前加下划线`_`,就让它成为一个私有实现细节,不能通过路由访问。
268310

269311
<!-- Content_END -->

0 commit comments

Comments
 (0)