快速了解 Next.js 中的路由分组

我最近在处理 Next.js 项目时学到的最酷的事情之一就是路线分组。

这是一个简单但功能强大的功能,可让您组织相关路线而不影响 URL 结构。如果您尚未探索过此功能,请让我为您分解!

Next.js 中的路由组是什么?

可以将路由组视为一种为您的应用创建干净、结构化路由的方法,而不会使 URL 路径变得杂乱。您可以通过将文件夹括在“括号 ()”中来实现这一点。

假设您正在开发一个电子商务网站。您可能希望所有产品路由(如 `/products/shoes` 或 `/products/bags`)共享某些功能,但您不希望 URL 中显示 products 一词。

路线组可以轻松处理这个问题!

工作原理如下:

app/
  (products)/
    shoes/
      page.tsx → /shoes
    bags/
      page.tsx → /bags

我如何在我的项目中使用它

我在当前项目中创建了两个路由组:(auth)和(root)。

  • (auth) 组处理与身份验证相关的页面,如登录和注册。
  • (根) 组组织导航栏需要保留的页面,例如主页。
  • 为什么要使用路线组?

    我使用路由组来为应用程序的不同部分定义特定的布局,而无需重复代码。例如:

  • 我不希望导航栏出现在我的登录和注册页面上。
  • 我需要在主页上使用导航栏,但我也希望整个应用程序的主题一致。路由组帮助我在不触碰 URL 路径的情况下实现了这一点。
  • 我如何实现它

    步骤 1:创建路由组

    Image description

    我在 `app/` 目录中创建了两个文件夹:`(auth)` 和 `(root).`

  • app/(auth)/ 文件夹:包含登录和注册页面。布局中不包括导航栏。
  • _app/(root)/_ 文件夹:
  • 包括导航栏组件以确保它位于主页和其他相关页面上。
  • 步骤 2:定义每个路线组的布局

    **但首先从全局根布局中删除导航栏:**

    Image description

    这是应用程序的中心布局。

    它将所有内容包装在主题提供程序中,以便主题切换等功能可以在所有页面上无缝运行。它处理应用程序的元数据和全局上下文,确保主题切换器影响所有页面。

    **(根)“组”布局(实际根布局):**包括导航栏,以在主页和其他主要路线上保持不变。

    Image description

    步骤 3:构建(auth)布局和页面:

    不包括导航栏,但提供专门用于身份验证页面的布局。

    在 (auth) 内部,我创建了两个文件夹:“sign-in”和“sign-up”。每个文件夹包含:

    Image description

    用于相应页面内容的 `page.tsx` 文件。

    (auth) 布局将它们包装起来,确保两个页面共享一个共同的结构。

    为什么这很重要

    **嗯,有三个原因:**

  • 我避免在多个文件中重复布局。
  • 我保持应用程序的 URL 路径干净且用户友好。从下面的示例中,我不需要写 http://localhost:3001/auth/Sign-in
  • 我确保应用程序的每个部分都有自己定制的布局,而不会影响整体设计。主页仍然有导航栏,而身份验证页面没有。
  • Image description

    总结

    如果您正在构建 Next.js 项目,那么路由分组值得一试。它们非常适合动态处理布局,同时保持路由整洁有序。

    无论是构建主页、身份验证流程,甚至是管理仪表板,路线组都允许您创建符合您的设计需求的布局。