跳至內容
簡介...社群...貢獻指南

(保留 SVG 圖示,因翻譯內容與程式碼無關)

文件貢獻指南

歡迎來到 Next.js 文件貢獻指南!我們很高興您來到這裡。

本頁面提供有關如何編輯 Next.js 文件的說明。我們的目標是確保社群中的每個人都能夠貢獻並改進我們的文件。

為何貢獻?

開源專案永遠都在進行中,文件也是如此。貢獻文件是讓初學者參與開源專案的好方法,也是讓經驗豐富的開發者在與社群分享知識的同時,闡明更複雜主題的好方法。

透過貢獻 Next.js 文件,您正在幫助我們為所有開發者建立更強大的學習資源。無論您發現了錯字、令人困惑的章節,或者您意識到缺少了特定主題,我們都歡迎並感謝您的貢獻。

如何貢獻 Next.js 儲存庫 中找到。要貢獻,您可以直接在 GitHub 上編輯檔案,或複製儲存庫並在本地編輯檔案。

GitHub 工作流程

如果您不熟悉 GitHub,建議您閱讀 GitHub 開源指南,以了解如何分支儲存庫、建立分支以及提交拉取請求。

注意事項:底層的文件程式碼位於一個與 Next.js 公開儲存庫同步的私有程式碼庫中。這表示您無法在本地預覽文件。但是,在合併拉取請求後,您將會在 nextjs.org 上看到您的變更。

撰寫 MDX

這些文件是以 MDX 寫成的,這是一種支援 JSX 語法的 Markdown 格式。這讓我們能夠在文件中嵌入 React 元件。請參閱 GitHub Markdown 指南 以快速瀏覽 Markdown 語法。

VSCode

在本地預覽變更

VSCode 有內建的 Markdown 預覽器,您可以使用它來在本地查看您的編輯內容。要為 MDX 檔案啟用預覽器,您需要在使用者設定中新增一個設定選項。

開啟命令面板(在 Mac 上按 ⌘ + ⇧ + P 或在 Windows 上按 Ctrl + Shift + P),然後搜尋「偏好設定:開啟使用者設定 (JSON)」。

然後,將以下一行新增到您的 settings.json 檔案中

settings.json
{
  "files.associations": {
    "*.mdx": "markdown"
  }
}

接下來,再次開啟命令面板,搜尋「Markdown:預覽檔案」或「Markdown:並排開啟預覽」。這將會開啟一個預覽視窗,您可以在其中查看格式化的變更。

擴充功能

我們也推薦 VSCode 使用者安裝以下擴充功能

  • MDX:提供 MDX 的 IntelliSense 和語法高亮。
  • Prettier:儲存時格式化 MDX 檔案。

審閱流程

提交您的貢獻後,Next.js 或開發者體驗團隊將審核您的變更,提供回饋,並在準備就緒時合併拉取請求。

如果您有任何問題或需要在您的 PR 評論中獲得進一步的協助,請告訴我們。感謝您為 Next.js 文件貢獻,並成為我們社群的一員!

提示:在提交您的 PR 之前,請執行 pnpm prettier-fix 來執行 Prettier。

檔案結構

這些文件使用檔案系統路由。在 /docs 內的每個資料夾和檔案都代表一個路由區段。這些區段用於產生網址路徑、導覽和麵包屑。

檔案結構反映了您在網站上看到的導覽,預設情況下,導覽項目按字母順序排序。但是,我們可以透過在資料夾或檔案名稱前面加上兩位數 (00-) 來更改項目的順序。

例如,在 函式 API 參考 中,頁面按字母順序排序,因為這樣開發人員更容易找到特定函式。

03-functions
├── cookies.mdx
├── draft-mode.mdx
├── fetch.mdx
└── ...

但是,在 路由區段 中,檔案名稱前面加上兩位數,並按照開發人員應該學習這些概念的順序排序。

02-routing
├── 01-defining-routes.mdx
├── 02-pages-and-layouts.mdx
├── 03-linking-and-navigating.mdx
└── ...

要快速找到頁面,您可以使用 ⌘ + P (Mac) 或 Ctrl + P (Windows) 在 VSCode 中開啟搜尋列。然後,輸入您要尋找的頁面的 slug。例如 defining-routes

為什麼不使用 manifest?

我們考慮過使用 manifest 檔案(另一種產生文件導覽的常用方法),但我們發現 manifest 會很快與檔案不同步。檔案系統路由迫使我們思考文件的結構,而且感覺更像是 Next.js 的原生方式。

Metadata(詮釋資料)

每個頁面在檔案頂部都有一個詮釋資料區塊,以三個破折號分隔。

必填欄位

以下欄位為必填

欄位說明
title頁面的 <h1> 標題,用於 SEO 和 OG 圖片。
description頁面的描述,用於 <meta name="description"> 標籤以利 SEO。
required-fields.mdx
---
title: Page Title
description: Page Description
---

建議將頁面標題限制為 2-3 個字(例如:最佳化圖片),描述限制為 1-2 個句子(例如:了解如何在 Next.js 中最佳化圖片)。

選填欄位
欄位說明
nav_title覆寫導覽列中的頁面標題。當頁面標題過長而無法完整顯示時,這會很有用。如果未提供,則使用 title 欄位。
source將內容拉入共用頁面。請參閱共用頁面
related文件底部的相關頁面列表。這些將自動轉換為卡片。請參閱相關連結

optional-fields.mdx
---
nav_title: Nav Item Title
source: app/building-your-application/optimizing/images
related:
  description: See the image component API reference.
  links:
    - app/api-reference/components/image
---

AppPages 文件 共用頁面
app/.../link.mdx
---
title: <Link>
description: API reference for the <Link> component.
---
 
This API reference will help you understand how to use the props
and configuration options available for the Link Component.

pages/.../link.mdx
---
title: <Link>
description: API reference for the <Link> component.
source: app/api-reference/components/link
---
 
{/* DO NOT EDIT THIS PAGE. */}
{/* The content of this page is pulled from the source above. */}

因此,我們可以在一個地方編輯內容,並將其反映到兩個章節中。

共用內容

在共用頁面中,有時會出現專屬於應用程式路由器 (App Router)頁面路由器 (Pages Router) 的內容。例如,<Link> 元件有一個 shallow 屬性,它僅在頁面路由器 中可用,而在應用程式路由器 中則不可用。

為了確保內容只在正確的路由器中顯示,我們可以將內容區塊包在 <AppOnly><PagesOnly> 元件中。

app/.../link.mdx
This content is shared between App and Pages.
 
<PagesOnly>
 
This content will only be shown on the Pages docs.
 
</PagesOnly>
 
This content is shared between App and Pages.

您可能會將這些元件用於範例和程式碼區塊。

程式碼區塊

程式碼區塊應包含可複製貼上的最小可運作範例。這表示程式碼應該無需任何額外設定即可執行。

例如,如果您要示範如何使用 <Link> 元件,您應該包含 import 陳述式和 <Link> 元件本身。

app/page.tsx
import Link from 'next/link'
 
export default function Page() {
  return <Link href="/about">About</Link>
}

在提交範例之前,請務必在本地執行。這將確保程式碼是最新的且可正常運作。

語言和檔案名稱
code-example.mdx
```bash filename="Terminal"
npx create-next-app
```

文件中大部分的範例都是用 tsxjsx 撰寫的,少數是用 bash 撰寫的。不過,您可以使用任何支援的語言,以下是完整清單

撰寫 JavaScript 程式碼區塊時,我們使用以下語言和副檔名組合。

語言副檔名
包含 JSX 程式碼的 JavaScript 檔案```jsx.js
不包含 JSX 的 JavaScript 檔案```js.js
包含 JSX 的 TypeScript 檔案```tsx.tsx
不包含 JSX 的 TypeScript 檔案```ts.ts

TS 和 JS 切換器
code-example.mdx
```tsx filename="app/page.tsx" switcher
 
```
 
```jsx filename="app/page.js" switcher
 
```

貼心小提醒:我們計劃未來自動將 TypeScript 程式碼片段編譯成 JavaScript。在此期間,您可以使用 transform.tools

程式碼行亮顯

可以亮顯程式碼行。當您想要讓使用者注意程式碼的特定部分時,這會很有用。您可以透過傳遞數字給 highlight 屬性來亮顯程式碼行。

單行: highlight={1}

app/page.tsx
import Link from 'next/link'
 
export default function Page() {
  return <Link href="/about">About</Link>
}

多行: highlight={1,3}

app/page.tsx
import Link from 'next/link'
 
export default function Page() {
  return <Link href="/about">About</Link>
}

行範圍: highlight={1-5}

app/page.tsx
import Link from 'next/link'
 
export default function Page() {
  return <Link href="/about">About</Link>
}

圖示

以下圖示可在文件中使用

mdx-icon.mdx
<Check size={18} />
<Cross size={18} />

輸出

我們在文件中不使用表情符號。

注意事項

對於重要但不關鍵的資訊,請使用注意事項。注意事項是一種在不干擾使用者閱讀主要內容的情況下新增資訊的好方法。

notes.mdx
> **Good to know**: This is a single line note.
 
> **Good to know**:
>
> - We also use this format for multi-line notes.
> - There are sometimes multiple items worth knowing or keeping in mind.

輸出

貼心小提醒:這是單行注意事項。

貼心小提醒:

巢狀欄位

欄位必要?說明
title選用卡片列表的標題。預設為下一步
description選用卡片列表的描述。
連結必要其他文件頁面的連結列表。每個列表項目應為相對 URL 路徑(不含開頭斜線),例如 app/api-reference/file-conventions/page

圖表

圖表是解釋複雜概念的好方法。我們使用 Figma 根據 Vercel 的設計指南來建立圖表。

圖表目前存放在我們私有 Next.js 網站的 /public 資料夾中。如果您想更新或新增圖表,請在 GitHub issue 中提出您的想法。

自訂元件和 HTML

這些是文件中可用的 React 元件:<Image /> (next/image)、<PagesOnly /><AppOnly /><Cross /><Check />。除了 <details> 標籤之外,我們不允許在文件中使用原始 HTML。

如果您有關於新元件的想法,請提出 GitHub issue

風格指南 頁面範本

雖然我們沒有嚴格的頁面範本,但您會在文件中看到重複出現的頁面區塊。

您可以根據需要新增這些區塊。

頁面類型

文件頁面也分為兩類:概念性和參考性。

注意事項:根據您貢獻的頁面,您可能需要遵循不同的語氣和風格。例如,概念性頁面更具指導性,並使用「您」來稱呼使用者。參考頁面更具技術性,它們使用更多祈使詞,例如「建立、更新、接受」,並且傾向於省略「您」字。

語氣

以下是一些在整個文件中保持一致風格和語氣的指導方針

雖然這些準則並非詳盡無遺,但它們應該可以幫助您入門。如果您想深入了解技術寫作,請查看 Google 技術寫作課程


感謝您為文件貢獻,並成為 Next.js 社群的一份子!