Next.js 專案結構

本頁提供 Next.js 專案的檔案與資料夾結構概覽,涵蓋頂層檔案與資料夾、設定檔,以及 apppages 目錄中的路由慣例。

頂層資料夾

app應用路由 (App Router)
pages頁面路由 (Pages Router)
public靜態資源檔案
src可選的應用程式原始碼資料夾

頂層檔案

Next.js
next.config.jsNext.js 設定檔
package.json專案依賴套件與腳本
instrumentation.tsOpenTelemetry 與監測檔案
middleware.tsNext.js 請求中介軟體
.env環境變數
.env.local本地環境變數
.env.production生產環境變數
.env.development開發環境變數
.eslintrc.jsonESLint 設定檔
.gitignoreGit 忽略清單
next-env.d.tsNext.js 的 TypeScript 宣告檔案
tsconfig.jsonTypeScript 設定檔
jsconfig.jsonJavaScript 設定檔

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巢狀路由區段

動態路由

[folder]動態路由區段
[...folder]全捕捉路由區段
[[...folder]]可選全捕捉路由區段

路由群組與私有資料夾

(folder)不影響路由的群組路由
_folder將資料夾及其子區段排除在路由外

平行與攔截路由

@folder命名插槽
(.)folder攔截同層級路由
(..)folder攔截上一層級路由
(..)(..)folder攔截上兩層級路由
(...)folder從根目錄攔截路由

後設資料檔案慣例

應用圖示

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 與 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 路由慣例

特殊檔案

_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可選全捕捉路由區段

On this page