Next.js 页面和路由
Next.js 的核心特性之一是其基于文件系统的路由系统。这意味着你不需要编写复杂的路由配置,只需在 pages 目录下创建文件和文件夹,Next.js 就会自动为你生成相应的路由。
创建页面
在 Next.js 中,一个页面就是一个导出了 React 组件的 .js、.jsx、.ts 或 .tsx 文件。
-
创建首页
pages/index.js文件对应应用的根路径/。 -
创建其他页面
在
pages目录下创建新文件即可生成新页面。pages/about.js->/aboutpages/contact.js->/contact
-
嵌套路由
你也可以通过创建文件夹来实现嵌套路由。
pages/blog/index.js->/blogpages/blog/first-post.js->/blog/first-post
页面跳转
在 Next.js 应用中,你应该使用 next/link 组件来实现客户端路由跳转。Link 组件可以预取页面,实现快速无缝的页面切换。
href:目标页面的路径。Link组件的子元素可以是一个<a>标签或其他任何可交互的元素。
动态路由
Next.js 支持动态路由,允许你根据参数生成页面。要创建动态路由,你需要在文件名或目录名中使用方括号 []。
-
单个动态参数
例如,创建一个
pages/posts/[id].js文件,它可以匹配/posts/1、/posts/abc等路由。你可以使用
useRouterhook 来获取路由参数。 -
多个动态参数
你也可以创建捕获所有路由的动态路由,在文件名中使用
[...slug]。例如,
pages/docs/[...slug].js可以匹配/docs/a、/docs/a/b、/docs/a/b/c等。
API 路由
Next.js 允许你在 pages/api 目录下创建 API 端点。这使得构建全栈应用变得非常简单。
-
创建 API 路由
pages/api/user.js会创建一个/api/user的 API 路由。req:http.IncomingMessage的实例,包含请求信息。res:http.ServerResponse的实例,用于发送响应。
-
动态 API 路由
API 路由也支持动态参数,例如
pages/api/users/[id].js。
总结
Next.js 的路由系统直观而强大。通过文件系统,你可以轻松地创建静态页面、动态页面和 API 路由。使用 next/link 组件可以实现高性能的客户端导航。掌握这些路由概念是开发 Next.js 应用的关键。