中文

了解如何使用 Next.js 路由组为您的 Web 应用程序创建清晰、有组织且易于维护的 URL 结构。 优化 SEO 和用户体验的路由。

Next.js 路由组:掌握 URL 结构和组织

Next.js 是一个强大的 React 框架,使开发人员能够构建高性能、对 SEO 友好的 Web 应用程序。 它的主要功能之一是文件系统路由,它允许您根据文件和目录的结构定义路由。 虽然这种方法很直观,但有时会导致项目结构混乱和无组织,尤其是在您的应用程序的复杂性增加时。 这就是路由组的用武之地。

Next.js 13 中引入的路由组提供了一种在不影响 URL 结构的情况下组织路由的方法。 它们允许您以逻辑方式将相关路由分组在一起,从而提高代码组织和可维护性,而不会在 URL 中引入额外的路径段。 这对于较大的应用程序尤其有用,在这些应用程序中,维护清晰的 URL 结构对于用户体验 (UX) 和搜索引擎优化 (SEO) 都至关重要。

什么是 Next.js 路由组?

路由组是 Next.js 中基于文件夹的约定,允许您组织路由,而无需创建额外的 URL 段。 它们通过将目录名称括在括号中来定义,例如 (group-name)。 括号向 Next.js 指示应将此文件夹视为逻辑分组,而不是实际 URL 路径的一部分。

例如,如果您有一个博客应用程序,其中包含不同类别的帖子(例如,技术、旅游、食物),则可以使用路由组来组织每个类别的文件,而不会影响 URL 结构。

使用路由组的好处

使用路由组有几个优点:

如何在 Next.js 中实现路由组

在 Next.js 中实现路由组非常简单。 这是一个循序渐进的指南:

  1. 创建新目录:在您的 app 目录(如果您使用的是较旧的 pages 路由器,则在 pages 目录中)创建一个新目录,并将目录名称括在括号中。 例如:(blog)(admin)(marketing)
  2. 将路由文件放置在内部:将路由文件(例如,page.jslayout.js)放置在路由组目录中。 这些文件将定义该组的路由。
  3. 定义路由:像往常一样在 Next.js 中定义路由,使用文件系统路由约定。

示例:带有路由组的博客应用程序

假设您正在构建一个博客应用程序,其中包含技术、旅游和食物类别。 您可以使用路由组来组织每个类别的文件,如下所示:

app/
 (technology)/
 page.js // /technology
 [slug]/page.js // /technology/[slug]
 (travel)/
 page.js // /travel
 [slug]/page.js // /travel/[slug]
 (food)/
 page.js // /food
 [slug]/page.js // /food/[slug]
 page.js // /

在此示例中,每个类别(技术、旅游、食物)都是一个路由组。 每个路由组中的文件定义该类别的路由。 请注意,即使添加了组织,URL 结构仍然清晰直观。

高级路由分组技术

路由组可以组合和嵌套,以在您的 Next.js 应用程序中创建复杂的组织结构。 这允许对路由组织和模块化进行细粒度控制。

嵌套路由组

您可以将路由组相互嵌套以创建分层结构。 这对于组织具有多个分类级别的大型复杂应用程序很有用。

app/
 (admin)/
 (users)/
 page.js // /admin/users
 [id]/page.js // /admin/users/[id]
 (products)/
 page.js // /admin/products
 [id]/page.js // /admin/products/[id]

在此示例中,(admin) 路由组包含两个嵌套的路由组:(users)(products)。 这使您可以分别组织管理面板每个部分的文件。

将路由组与常规路由结合使用

路由组可以与常规路由结合使用,以创建灵活的路由结构。 这允许您将组织的部分与独立页面混合在一起。

app/
 (blog)/
 page.js // /blog
 [slug]/page.js // /blog/[slug]
 about/page.js // /about
 contact/page.js // /contact

在此示例中,(blog) 路由组包含博客部分的路由,而 aboutcontact 目录定义了独立页面。

路由组注意事项和最佳实践

虽然路由组是组织 Next.js 应用程序的强大工具,但有效地使用它们非常重要。 以下是一些需要记住的注意事项和最佳实践:

用例和真实示例

路由组适用于各种场景。 以下是一些真实示例:

将路由组与其他 Next.js 路由功能进行比较

Next.js 提供了几个其他路由功能,可以与路由组结合使用。 重要的是要了解这些功能之间的差异,以便为您的特定需求选择最佳方法。

并行路由

并行路由允许您在同一布局中同时呈现多个页面。 与仅影响文件组织的路由组不同,并行路由会修改应用程序布局和结构。 虽然它们可以一起使用,但它们的用途不同。

拦截路由

拦截路由允许您拦截路由并呈现不同的组件。 拦截路由非常适合模态实现或在导航到复杂路由时提供更友好的用户体验。 它们不会像路由组那样影响文件系统组织。

布局

布局是包装页面的 UI 组件,并在多个路由中提供一致的结构。 布局通常在路由组中定义并且可以嵌套,从而提供了一种管理应用程序视觉结构的强大方法。

迁移到路由组

如果您有现有的 Next.js 应用程序,则迁移到路由组是一个相对简单的过程。 以下是涉及的步骤:

  1. 识别要分组的路由:根据其功能或类别识别要分组在一起的路由。
  2. 创建路由组目录:为每个路由组创建新目录,并将目录名称括在括号中。
  3. 移动路由文件:将路由文件移动到相应的路由组目录中。
  4. 测试您的应用程序:彻底测试您的应用程序,以确保所有路由都按预期工作。
  5. 更新链接:如果您有任何硬编码链接,请更新它们以反映新的路由结构(尽管理想情况下,您将使用 Link 组件,该组件应自动处理更改)。

解决常见问题

虽然路由组通常易于使用,但您可能会遇到一些常见问题。 以下是一些故障排除提示:

Next.js 中路由的未来

Next.js 在不断发展,路由系统也不例外。 未来版本的 Next.js 可能会为路由系统引入新功能和改进,使其更加强大和灵活。 及时了解最新的 Next.js 版本对于利用这些改进至关重要。

结论

Next.js 路由组是组织应用程序的 URL 结构和提高代码可维护性的宝贵工具。 通过将相关路由分组在一起,您可以创建一个更清晰、更有组织的代码库,该代码库更易于导航和更新。 无论您是构建小型个人博客还是大型企业应用程序,路由组都可以帮助您管理路由系统的复杂性并提高项目的整体质量。 有效地理解和应用路由组对于任何认真的 Next.js 开发人员来说都是必不可少的。

通过遵循本文中概述的指南和最佳实践,您可以利用路由组的强大功能来创建组织良好且可维护的 Next.js 应用程序。 请记住选择有意义的名称,保持一致的结构并记录项目的路由策略。 借助路由组,您可以将您的 Next.js 开发技能提升到一个新的水平。