Next.js 项目结构
此页面提供了 Next.js 项目的文件和文件夹结构的概述。它涵盖了 app 和 pages 目录中的顶级文件和文件夹、配置文件以及路由约定。
顶级文件夹
文件夹名 描述 appApp Router pagesPages Router public待服务的静态资源 src可选的应用程序源文件夹
顶级文件
文件名 描述 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 路由约定
路由文件
文件名 文件类型 描述 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 .tsAPP 端点 template.js .jsx .tsx重新渲染布局 default.js .jsx .tsx并行路由回退页面
嵌套路由
路径 描述 folder路由段 folder/folder嵌套路线段
动态路由
文件夹名 描述 [folder]动态路由段 [...folder]捕捉所有路由段 [[...folder]]可选的捕捉所有路由段
路由组和私有文件夹
文件夹名 描述 (folder)在不影响路由的情况下分组路由 _folder选择文件夹和所有子段暴漏路由
平行和拦截路线
文件夹名 描述 @folder命名插槽 (.)folder拦截同级 (..)folder拦截上一级 (..)(..)folder拦截上两级 (...)folder从根开始拦截
元数据文件约定
App 图标
文件名 文件类型 描述 favicon.ico图标文件 icon.ico .jpg .jpeg .png .svgApp 图标文件 icon.js .ts .tsx生成的 App 图标 apple-icon.jpg .jpeg .png苹果 App 图标文件 apple-icon.js .ts .tsx生成的苹果 App 图标
开放图谱和推特图像
文件名 文件类型 描述 opengraph-image.jpg .jpeg .png .gif开放图谱图像文件 opengraph-image.js .ts .tsx生成的开放图图像 twitter-image.jpg jpeg .png .gif推特图像文件 twitter-image.js .ts .tsx生成的推特图片
搜索引擎优化(SEO)
文件名 文件类型 描述 sitemap.xml站点地图文件 sitemap.js .ts生成的站点地图 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可选的捕获所有路由段