Skip to content

Next.js 项目结构

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

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

顶级文件夹

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

路由段到路径段

app应用路由
pages页面路由
public要服务的静态资产
src可选的应用源文件夹

顶级文件

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

Next.js
next.config.jsNext.js 的配置文件
package.json项目依赖项和脚本
instrumentation.tsOpenTelemetry 和 Instrumentation 文件
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 路由 中定义路由和处理元数据的文件约定。

Routing Files

说明文件扩展名用途
layout.js .jsx .tsx布局
page.js .jsx .tsx页面
loading.js .jsx .tsx加载界面
not-found.js .jsx .tsx未找到界面
error.js .jsx .tsx错误界面
global-error.js .jsx .tsx全局错误界面
route.js .tsAPI端点
template.js .jsx .tsx重新渲染的布局
default.js .jsx .tsx平行路由回退页面

Nested Routes

说明用途
folder路由片段
folder/folder嵌套路由片段

Dynamic Routes

说明用途
[folder]动态路由片段
[...folder]捕获所有路由片段
[[...folder]]可选的捕获所有路由片段

Route Groups and Private Folders

说明用途
(folder)不影响路由的组路由
_folder将文件夹及其所有子片段排除在路由之外

并行和拦截路由

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

元数据文件约定

应用图标

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

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

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

pages 路由约定

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

Special Files

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

Routes

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

Dynamic Routes

文件夹约定
[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可选全捕获路由段