Javascript konvertiert Markdown/Textile in HTML (im Idealfall Markdown/Textile zurückgeben)
P粉295616170
2023-08-24 20:46:39
<p>Es gibt mehrere gute Javascript-<strong>Editoren</strong> für Markdown/Textile (z. B. http://attacklab.net/showdown/, den ich jetzt verwende), aber was ich brauche, ist eine Javascript-Funktion zum Konvertieren von Zeichenfolgen zwischen Markdown / Textile -> HTML. </p>
<p>Was ist der beste Ansatz? (Idealerweise sollte es jQuery-freundlich sein – z. B. <code>$("#editor").markdown_to_html()</code>)</p>
<p><strong>Bearbeiten: </strong>Anders gesagt, ich suche nach Rails's <code>textilize()</code> /code> ; Javascript-Implementierung>
我认为在这里列出 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...