MDN 上的程式碼示例
在 MDN 上,您會看到大量程式碼示例,用於演示我們所記錄的 Web 平臺功能的使用方法。本文件將介紹您可以向頁面新增程式碼示例的方式,以及您可以使用的型別以及何時使用它們。
注意: 本頁面介紹程式碼如何包含在 MDN 頁面中。如果您想了解在 MDN 頁面中新增程式碼的語法檢查和樣式提示,請參閱我們的 程式碼風格指南。
MDN 上有哪些型別的程式碼示例?
有四種類型的程式碼示例可供使用
何時應使用每種示例?
每種型別的程式碼示例都有其自身的用例
- 如果您需要展示程式碼,並且在已釋出的頁面上展示程式碼結果並不重要,或者您正在文章中展示一箇中間步驟,那麼靜態示例會很有用。讀者通常會查詢這些顯示功能用法的程式碼塊,以便他們可以將一個最小化的示例複製並貼上到他們的專案中。此外,您可能需要一個靜態程式碼塊來演示一個 API 或一項功能,該功能作為即時示例效果不佳。
- 如果您想展示原始碼,然後展示其執行效果,並且不太在意它是否是一個獨立的示例,那麼即時示例會很有用。它們很有用,因為您只需要更新一次程式碼,就可以更新頁面上的程式碼塊和並排顯示的即時結果。
- 互動式示例用於參考頁面。每頁僅限使用一次,並且必須位於頁面介紹之後的特定位置。它們對於展示某個功能的常見或實際用途非常有用。
- 當您有一個想要嵌入的現有示例,但不想顯示其原始碼,並且/或您想確保該示例以獨立形式提供時,GitHub 嵌入會很有用。因為頁面上的程式碼和原始碼在兩個不同的位置,所以維護成本更高。
一般準則
在新增或更新 MDN 上的示例時,需要牢記樣式和內容方面的考慮因素。
- 在頁面上放置示例時,請儘量確保涵蓋您正在撰寫的 API 或概念的所有功能或選項。至少,應演示最常見選項或屬性。
- 在每個示例之前,請解釋該示例的作用以及它為何有趣或有用。
- 在每段程式碼之後,解釋其作用。
- 如果可能,將大型示例分解成較小的部分。例如,“即時示例”系統會在執行示例之前自動將所有程式碼合併在一起,因此您可以實際將 JavaScript、HTML 和/或 CSS 分成更小的部分,並在每個部分之後新增描述性文字。這是幫助更清晰地解釋長篇或複雜程式碼的絕佳方法。
- 超越演示 API 或技術中的每個部分如何工作。考慮您可能想嘗試演示的實際用例。
靜態示例
靜態示例是顯示功能在原始碼中外觀的程式碼塊。這些示例使用 Markdown 的“程式碼圍欄”新增到頁面中,如 示例程式碼塊中所述。在文件頁面中使用時,它們看起來像這樣
// This is a JS example
const test = "Hello";
console.log(test);
互動式示例
InteractiveExample 宏用於在 MDN 參考頁面的頂部嵌入互動式示例。它們適用於想要嘗試示例但又不想通讀整個主題或功能文章的讀者。
InteractiveExample 宏接受一個字串作為示例的標題,後跟一個關鍵字來指定示例的高度。要包含在示例中的程式碼塊出現在宏呼叫之後,並在程式碼塊語言後的資訊字串中包含關鍵字 interactive-example。JavaScript Array.concat() 的用法是此宏的一個很好的例子,在 markdown 原始碼中看起來像這樣
{{InteractiveExample("JavaScript Demo: Array.concat()", "shorter")}}
```js interactive-example
const array1 = ["a", "b", "c"];
const array2 = ["d", "e", "f"];
const array3 = array1.concat(array2);
console.log(array3);
// Expected output: Array ["a", "b", "c", "d", "e", "f"]
```
互動式示例有一些限制
- 它們是針對特定技術專門設計的 — JavaScript 的 UI 與 CSS 的 UI 不同,並且它們僅能獨立說明一項技術。如果您想演示如何結合使用特定的 HTML/CSS/JS 結構,則不適合。
- 它們不適用於大型程式碼示例 — UI 支援一系列固定高度,這對於簡短(例如 10-15 行)的示例來說效果最好。
- 一個 MDN 頁面只能有一個互動式示例。
即時示例
即時示例使用 EmbedLiveSample 宏插入到頁面中。一個 {{EmbedLiveSample}} 宏從頁面中獲取程式碼塊,將它們組合成一個 <iframe>,並將結果插入到頁面中。有關更多資訊,請參閱 即時示例指南。
GitHub 即時示例
GitHub 即時示例使用 EmbedGHLiveSample 宏嵌入到頁面中。一個 {{EmbedGHLiveSample}} 獲取指定 URL(必須是MDN GitHub 儲存庫)的內容,並將其作為一個 <iframe> 插入到頁面中。
該宏有三個引數
- 要嵌入的文件的 URL — 此 URL 相對於 MDN 組織,其頂級目錄位於
https://mdn.github.io/。因此,此引數需要包含該 URL 之後的部分,例如my-subdirectory/example.html。如果檔名是index.html,則可以省略。 <iframe>的寬度,可以表示為百分比或畫素。<iframe>的高度,可以表示為百分比或畫素。
讓我們來看一個例子。假設我們想嵌入位於 https://mdn.github.io/learning-area/css/styling-boxes/backgrounds/ 的程式碼。我們可以使用以下呼叫
{{EmbedGHLiveSample("learning-area/css/styling-boxes/backgrounds/", '100%', 100)}}
渲染後看起來是這樣的