整理檔案
Nextra 首先會從 pages
目錄收集所有 Markdown 檔案和設定,然後產生整個網站的「頁面地圖資訊」,以渲染_導覽列_和下方_側邊欄_等內容

範例:Nextra 文件主題 的側邊欄和導覽列是根據 Markdown 檔案自動產生的。
預設行為
預設情況下,頁面地圖包含所有 .md
和 .mdx
檔案名稱和目錄結構,並按字母順序排序。然後,Nextra 會使用 title 套件從檔案名稱取得格式化的頁面名稱。
例如,如果您有以下結構
- contact.md
- index.mdx
- legal.md
- index.mdx
解析後的頁面地圖將會是(請注意,所有名稱都已按字母順序排序)
[
{
"name": "About",
"children": [{ "name": "Index" }, { "name": "Legal" }]
},
{ "name": "Contact" },
{ "name": "Index" }
]
全域頁面地圖將會由 Nextra 導入每個頁面。然後,設定的主題將使用該頁面地圖渲染實際的 UI。
_meta.js
自訂每個頁面的標題是很常見的做法,而不是僅僅依賴檔案名稱。標題為「索引」的頁面缺乏清晰度。最好指定一個有意義的標題,準確地表示內容,例如「首頁」。
這就是 _meta.js
檔案的用途。您可以在每個目錄中放置一個 _meta.js
檔案,它將用於覆寫每個頁面的預設設定
- _meta.js
- contact.md
- index.mdx
- _meta.js
- legal.md
- index.mdx
允許的擴展名
_meta
檔案也可以使用 .jsx
、.ts
和 .tsx
副檔名(例如 _meta.ts
)。
按字母順序排序頁面
您可以使用 ESLint 內建的 sort-keys
規則,在 _meta
檔案頂端附加 /* eslint sort-keys: error */
註解,您將會收到 ESLint 關於錯誤順序的錯誤訊息。
搭配 next-sitemap
使用
如果您正在使用 next-sitemap,您可能需要在 next-sitemap.config.js
檔案中加入 exclude: ['*/_meta']
,因為 從建置中排除 _meta
檔案比較麻煩。
允許的鍵值
_meta
鍵的類型應該始終是 string
而不是 number
,因為 JavaScript 物件的 數字永遠會先排序。
以下
export default {
foo: '',
1992_10_21: '',
1: ''
}
將會轉換為
export default {
'1': '',
'19921021': '',
foo: ''
}
範例
將程式碼放入您的 pages/_meta.js
檔案中
export default {
index: 'My Homepage',
contact: 'Contact Us',
about: 'About Us'
}
它會告知 Nextra 每個頁面的順序和正確的標題。
或者,您也可以使用 title
屬性,並在其中加入其他設定
export default {
index: 'My Homepage',
contact: 'Contact Us',
about: {
title: 'About Us'
// ... extra configurations
}
}
額外的設定會以額外資訊的形式傳遞給**主題**。請查看相對應的頁面以取得更多資訊