v1 停用說明
最後更新
v2 只提供 Markdown 解析器
MDParser;本頁列出 v1 移除的 API、替代方式、遷移範例與 v1/v2 效能比較。繼續使用 v1
v1 的
MDEditor、MDViewer 與 MDParser 類別已停用,不再開發新功能。需要編輯器的專案固定使用 1.11.6:- <script src="https://cdn.jsdelivr.net/npm/@pardnchiu/nanomd@1.11.6/dist/NanoMD.js"></script>
- npm i @pardnchiu/nanomd@1.11.6
請寫明確的版本號;
@latest 或不帶版本號會解析到 v2。已移除的 API
| v1 | 移除於 | v2 替代做法 |
|---|---|---|
MDEditor | 移除於 v2.0.0 | 改用 <textarea>、CodeMirror、Monaco 等編輯器,內容交給 MDParser.Parse() |
MDViewer | 移除於 v2.0.0 | container.innerHTML = MDParser.Parse(text).html() 後呼叫 MDParser.Refresh(container) |
new MDParser({ standard }).parse(text) | 移除於 v2.0.0 | MDParser.Parse(text).html();standard 選項取消,一律支援完整語法 |
PDMarkdownEditor | 移除於 v2.0.0 | 無公開替代 |
ESM 匯出 editor、viewer | 移除於 v2.0.0 | import { 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 移除,無公開替代 |
檔案與樣式
| v1 | v2 |
|---|---|
dist/NanoMD.js | dist/parser.js(全域 MDParser) |
dist/NanoMD.esm.js | dist/parser.esm.js |
dist/NanoMD.css、dist/NanoMD-output.css | dist/parser.css,由 parser.js 自動從同目錄載入 |
容器 class .pd-md-viewer | .nanomd |
| 載入時自動插入 Material Symbols、Mermaid、code-prettify | 以 MDParser.Init({ enable }) 按需載入,見 依賴與 Refresh |
行為差異
| 項目 | v1.11.6 | v2 |
|---|---|---|
文字中的 $ | 輸出為 @dollar@ | 原樣輸出;成對的 $...$ 為行內數學式 |
| YouTube/Vimeo 預覽 | 未設定 hashtag.path 時不產生 | 一律附上內嵌播放器 |
| raw HTML | 不清洗 | 移除危險標籤、事件屬性與 javascript: 網址 |
| Mermaid 語法錯誤 | 顯示 Mermaid 錯誤圖 | 改顯示為一般程式碼區塊 |
| 執行環境 | 需要瀏覽器 DOM | Parse()、html() 可在 Node.js、Worker 執行 |
v1 vs v2
同一份範例文件重複放大後,在 headless Chrome 量測轉成 HTML 的耗時;超過 15 秒記為超時,超時列的倍數以 15 秒計算為下限。
| 文件大小 | v1.11.6 MDParser().parse() | v2 Parse().html() | 倍數 |
|---|---|---|---|
| 4.4 KB | 2.6 ms | 0.4 ms | 7× |
| 44.3 KB | 29.6 ms | 1.8 ms | 16× |
| 443.4 KB | 1,790 ms | 17.7 ms | 101× |
| 1.08 MB | 11,037 ms | 47.4 ms | 233× |
| 2.16 MB | 超時 | 82.3 ms | 182× 以上 |
| 4.33 MB | 超時 | 156.4 ms | 96× 以上 |
遷移範例
v1 的編輯器加檢視器,在 v2 改為任一編輯器加防抖渲染:
- <textarea id="editor" rows="4" style="width:100%"># Hello
- Edit me, the preview updates after you stop typing.</textarea>
- <div id="viewer" class="nanomd"></div>
- <script>
- const editor = document.getElementById("editor");
- const viewer = document.getElementById("viewer");
- let timer;
- function render() {
- viewer.innerHTML = MDParser.Parse(editor.value).html();
- MDParser.Refresh(viewer).catch((err) => console.error(err.message));
- }
- editor.addEventListener("input", () => {
- clearTimeout(timer);
- timer = setTimeout(render, 300);
- });
- render();
- console.log(viewer.querySelector(".md-h1").textContent);
- </script>