跳至内容
简介快速入门项目结构

Next.js 项目结构

此页面提供了 Next.js 应用程序项目结构的概述。它涵盖了顶级文件和文件夹、配置文件以及 apppages 目录中的路由约定。

点击文件和文件夹名称以了解每个约定的更多信息。

顶级文件夹

顶级文件夹用于组织应用程序的代码和静态资源。

Route segments to path segments
appApp 路由器
pages页面路由器
public要提供的静态资源
src可选的应用程序源文件夹

顶级文件

顶级文件用于配置应用程序、管理依赖项、运行中间件、集成监控工具以及定义环境变量。

Next.js
next.config.jsNext.js 的配置文件
package.json项目依赖项和脚本
instrumentation.tsOpenTelemetry 和检测文件
middleware.tsNext.js 请求中间件
.env环境变量
.env.local本地环境变量
.env.production生产环境变量
.env.development开发环境变量
.eslintrc.jsonESLint 的配置文件
.gitignore要忽略的 Git 文件和文件夹
next-env.d.tsNext.js 的 TypeScript 声明文件
tsconfig.jsonTypeScript 的配置文件
jsconfig.jsonJavaScript 的配置文件

app 路由约定

以下文件约定用于在app 路由器中定义路由和处理元数据。

路由文件

layout.js .jsx .tsx布局
page.js .jsx .tsx页面
loading.js .jsx .tsx加载 UI
not-found.js .jsx .tsx未找到 UI
error.js .jsx .tsx错误 UI
global-error.js .jsx .tsx全局错误 UI
route.js .tsAPI 端点
template.js .jsx .tsx重新渲染的布局
default.js .jsx .tsx并行路由回退页面

嵌套路由

folder路由段
folder/folder嵌套路由段

动态路由

[文件夹]动态路由片段
[...文件夹]通配符路由片段
[[...文件夹]]可选通配符路由片段

路由组和私有文件夹

(文件夹)分组路由而不影响路由
_文件夹将文件夹及其所有子片段排除在路由之外

并行和拦截路由

@文件夹命名插槽
(.)文件夹拦截同级
(..)文件夹拦截上一级
(..)(..)文件夹拦截上上级
(...)文件夹从根目录拦截

元数据文件约定

应用图标

网站favicon.icoFavicon 文件
icon.ico .jpg .jpeg .png .svg应用图标文件
icon.js .ts .tsx生成的应用图标
apple-icon.jpg .jpeg, .pngApple 应用图标文件
apple-icon.js .ts .tsx生成的 Apple 应用图标

Open Graph 和 Twitter 图片

opengraph-image.jpg .jpeg .png .gifOpen Graph 图片文件
opengraph-image.js .ts .tsx生成的 Open Graph 图片
twitter-image.jpg .jpeg .png .gifTwitter 图片文件
twitter-image.js .ts .tsx生成的 Twitter 图片

SEO

站点地图.xml站点地图文件
站点地图.js .ts生成的站点地图
robots.txtRobots 文件
robots.js .ts生成的 Robots 文件

pages 路由约定

以下文件约定用于在 pages 路由器 中定义路由。

特殊文件

_app.js .jsx .tsx自定义应用
_document.js .jsx .tsx自定义文档
_error.js .jsx .tsx自定义错误页面
404.js .jsx .tsx404 错误页面
500.js .jsx .tsx500 错误页面

路由

文件夹约定
index.js .jsx .tsx首页
folder/index.js .jsx .tsx嵌套页面
文件约定
index.js .jsx .tsx首页
文件.js .jsx .tsx嵌套页面

动态路由

文件夹约定
[文件夹]/index.js .jsx .tsx动态路由片段
[...文件夹]/index.js .jsx .tsx通配符路由片段
[[...文件夹]]/index.js .jsx .tsx可选通配符路由片段
文件约定
[文件].js .jsx .tsx动态路由片段
[...文件].js .jsx .tsx通配符路由片段
[[...文件]].js .jsx .tsx可选通配符路由片段