Javascript 將 Markdown/Textile 轉換為 HTML(理想情況下,返回 Markdown/Textile)
P粉295616170
2023-08-24 20:46:39
<p>有幾個很好的用於Markdown / Textile 的Javascript <strong>編輯器</strong>(例如:http://attacklab.net/showdown/,我現在正在使用的),但我需要的是一個Javascript 函數,用於在Markdown / Textile -> HTML 之間轉換字串。 </p>
<p>最好的方法是什麼? (理想情況下,它應該是 jQuery 友善的—例如,<code>$("#editor").markdown_to_html()</code>)</p>
<p><strong>編輯:</strong>另一個說法是,我正在尋找Rails 的<code>textilize()</code> 和<code>markdown()</code> ; 的Javascript 實作> 文字助理</p>
我認為在這裡列出 JavaScript 解決方案及其縮小(未壓縮)的大小和優點/缺點是值得的。縮小程式碼的壓縮大小約為未壓縮大小的 50%。歸結為:
所有這些都使用 MIT 許可證,大多數都在 npm 上。
markdown-it:104KB。 自 CommonMark 遷移以來為 StackExchange 提供支援。遵循 CommonMark 規範,現在或多或少是黃金標準;支援語法擴展;預設產生安全輸出。快速地;與攤牌一樣強大,但規模非常大。具有大量功能(例如同步滾動)。也是 http://dillinger.io/ 的基礎。
攤牌:28KB。具有全面的 CommonMark 支持,並且是以前的黃金標準;明顯小於 Markdown-It 但速度較慢。它是向下翻頁的基礎。
向下翻頁:8KB。 在 CommonMark 遷移之前為 StackExchange 提供支援。它非常強大,但缺少表格、定義清單、腳註等。除了 8KB 轉換器腳本之外,它還提供編輯器和清理器腳本。
縮減:1.3KB。完全公開,我寫的。比任何其他輕量級轉換器更廣泛的功能範圍;處理大多數但不是全部的 CommonMark 規格。不建議用於使用者編輯,但對於在網頁應用程式中呈現資訊非常有用。沒有內嵌 HTML。
標記:19KB。綜合的;針對單元測試套件進行測試;支援自訂詞法分析器規則。
micromarkdown:5KB。支援很多功能,但缺少一些常見的功能,例如使用
*
的無序列表,以及一些嚴格來說不屬於規範一部分的常見功能,例如受隔離的程式碼區塊。許多錯誤,在大多數較長的文檔上引發異常。我認為它是實驗性的。nano-markdown:1.9KB。功能範圍僅限於大多數文件使用的內容;比 micromarkdown 更強大,但並不完美;使用自己的非常基本的單元測試。相當穩健,但在許多邊緣情況下會出現問題。
mmd.js:800 位元組。努力製作盡可能最小且仍然可用的解析器的結果。支援一小部分;需要為其量身定製文件。
markdown-js:54KB(無法下載縮小版;可能縮小版)至~20KB)。看起來很全面,包括測試,但我不是很熟悉。
meltdown:41KB(縮小後無法下載;可能縮小至約 15KB )。 jQuery 外掛; Markdown Extra(表格、定義清單、註腳)。
unified.js:各不相同,5-100KB。一個基於插件的系統,用於在 html、markdown 和散文之間進行轉換。根據您需要的插件(拼字檢查、語法反白、輸入清理),檔案大小會有所不同。可能更多地使用伺服器端而不是客戶端。
對於 Markdown -> HTML,有 Showdown
#StackOverflow本身使用Markdown語言進行問答;您是否嘗試過看看它是如何運作的?
嗯,它似乎正在使用PageDown,它可以在 MIT 授權下使用 p>
問題有沒有好的Markdown Javascript函式庫或控制項? 及其答案也可能有幫助:-)
當然,完整的編輯器並不完全是您所要求的;但他們必須使用某種函數將Markdown 程式碼轉換為HTML ;並且,根據這些編輯器的許可證,您也許可以重複使用該功能...
實際上,如果您仔細查看 Showdown,在其程式碼來源(檔案 showdown.js) 中,您會發現這部分註解:
它不是 jQuery 語法,但應該很容易整合到您的應用程式中;-)
關於紡織,似乎很難找到有用的東西:-(
另一方面,HTML -> Markdown,我想事情可能會有點困難...
我要做的是將Markdown 和HTML 都儲存在我的應用程式資料儲存(資料庫?)中,並使用一個進行編輯,另一個進行渲染...會佔用更多空間,但似乎比“解密」風險要小「HTML...