v2.0.1

v1 停用說明

最後更新


v2 只提供 Markdown 解析器 MDParser;本頁列出 v1 移除的 API、替代方式、遷移範例與 v1/v2 效能比較。

繼續使用 v1


v1 的 MDEditor、MDViewer 與 MDParser 類別已停用,不再開發新功能。需要編輯器的專案固定使用 1.11.6:
  1. <script src="https://cdn.jsdelivr.net/npm/@pardnchiu/nanomd@1.11.6/dist/NanoMD.js"></script>

  1. npm i @pardnchiu/nanomd@1.11.6

請寫明確的版本號;@latest 或不帶版本號會解析到 v2。

已移除的 API


v1移除於v2 替代做法
MDEditor移除於 v2.0.0改用 <textarea>、CodeMirror、Monaco 等編輯器,內容交給 MDParser.Parse()
MDViewer移除於 v2.0.0container.innerHTML = MDParser.Parse(text).html() 後呼叫 MDParser.Refresh(container)
new MDParser({ standard }).parse(text)移除於 v2.0.0MDParser.Parse(text).html();standard 選項取消,一律支援完整語法
PDMarkdownEditor移除於 v2.0.0無公開替代
ESM 匯出 editor、viewer移除於 v2.0.0import { MDParser } from "@pardnchiu/nanomd"
sync.editor、sync.delay、sync.scroll移除於 v2.0.0自行監聽輸入並防抖,見下方遷移範例
emptyContent移除於 v2.0.0由呼叫端決定空內容要渲染什麼
hashtag.path、hashtag.target移除於 v2.0.0無公開替代;#tag 輸出為一般文字
changeMode()、style.mode移除於 v2.0.0在 .nanomd 容器設定 data-mode,見 樣式主題
style.fill移除於 v2.0.0在 .nanomd 容器設定 data-fill="1"
download()、openfile()、undo()、redo()、快捷鍵與工具列移除於 v2.0.0隨 MDEditor 移除,無公開替代

檔案與樣式


v1v2
dist/NanoMD.jsdist/parser.js(全域 MDParser)
dist/NanoMD.esm.jsdist/parser.esm.js
dist/NanoMD.css、dist/NanoMD-output.cssdist/parser.css,由 parser.js 自動從同目錄載入
容器 class .pd-md-viewer.nanomd
載入時自動插入 Material Symbols、Mermaid、code-prettify以 MDParser.Init({ enable }) 按需載入,見 依賴與 Refresh

行為差異


項目v1.11.6v2
文字中的 $輸出為 @dollar@原樣輸出;成對的 $...$ 為行內數學式
YouTube/Vimeo 預覽未設定 hashtag.path 時不產生一律附上內嵌播放器
raw HTML不清洗移除危險標籤、事件屬性與 javascript: 網址
Mermaid 語法錯誤顯示 Mermaid 錯誤圖改顯示為一般程式碼區塊
執行環境需要瀏覽器 DOMParse()、html() 可在 Node.js、Worker 執行

v1 vs v2


同一份範例文件重複放大後,在 headless Chrome 量測轉成 HTML 的耗時;超過 15 秒記為超時,超時列的倍數以 15 秒計算為下限。
文件大小v1.11.6 MDParser().parse()v2 Parse().html()倍數
4.4 KB2.6 ms0.4 ms7×
44.3 KB29.6 ms1.8 ms16×
443.4 KB1,790 ms17.7 ms101×
1.08 MB11,037 ms47.4 ms233×
2.16 MB超時82.3 ms182× 以上
4.33 MB超時156.4 ms96× 以上

遷移範例


v1 的編輯器加檢視器,在 v2 改為任一編輯器加防抖渲染:
  1. <textarea id="editor" rows="4" style="width:100%"># Hello
  2. Edit me, the preview updates after you stop typing.</textarea>
  3. <div id="viewer" class="nanomd"></div>
  4. <script>
  5. const editor = document.getElementById("editor");
  6. const viewer = document.getElementById("viewer");
  7. let timer;
  8. function render() {
  9. viewer.innerHTML = MDParser.Parse(editor.value).html();
  10. MDParser.Refresh(viewer).catch((err) => console.error(err.message));
  11. }
  12. editor.addEventListener("input", () => {
  13. clearTimeout(timer);
  14. timer = setTimeout(render, 300);
  15. });
  16. render();
  17. console.log(viewer.querySelector(".md-h1").textContent);
  18. </script>
即時預覽 · @pardnchiu/nanomd@2.0.1
EN