文档
开始
项目结构

本页概述了 Next.js 项目的文件和文件夹结构。它包括顶层文件和文件夹、配置文件以及应用程序和页面目录中的路由约定。

顶层文件夹

appApp Router
pagesPages Router
public静态资源
src可选的 src 文件夹

顶层文件

Next.js
next.config.jsNext.js 配置文件
package.json项目依赖和脚本
instrumentation.tsOpenTelemetry and Instrumentation file
middleware.tsNext.js 请求中间件
.env环境变量
.env.local本地环境变量
.env.production生产环境变量
.env.development开发环境变量
.eslintrc.jsonESLint 配置文件
.gitignoreGit 忽略配置文件
.next-env.d.tsNext.js TypeScript 声明文件
tsconfig.jsonTypeScript 配置文件
jsconfig.jsonJavaScript 配置文件
postcss.config.jsTailwind CSS 配置文件

app 路由约定

路由文件

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

嵌套路由

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

动态路由

[folder]动态路由段
[...folder]全匹配路由段
[[...folder]]可选全匹配路由段

路由分组和私有文件夹

(folder)对路由进行分组而不影响路由本身
_folder将文件夹和所有子段标记为私有的,不参与路由匹配

并行和拦截路由

@folder命名插槽
(.)folder拦截同级路由
(..)folder拦截上一级路由
(..)(..)folder拦截上两级路由
(...)folder从根路由开始拦截

Metadata 文件约定

应用图标

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

Open Graph and 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

sitemap.xmlSitemap 文件
sitemap.js .ts生成的 Sitemap 文件
robots.txtRobots 文件
robots.js .ts生成的 Robots 文件

pages 路由约定

特殊文件

_app.js .jsx .tsx定制 App
_document.js .jsx .tsx定制 Document
_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主页面
file.js .jsx .tsx嵌套页面

动态路由

文件夹约定
[folder]/index.js .jsx .tsx动态路由段
[...folder]/index.js .jsx .tsx全捕获路由段
[[...folder]]/index.js .jsx .tsx可选全捕获路由段
文件约定
[file].js .jsx .tsx动态路由段
[...file].js .jsx .tsx全捕获路由段
[[...file]].js .jsx .tsx可选全捕获路由段