Web Library: Markdown Parser / Renderer

 8th April 2021 at 5:35pm

流行的 JS parser 有:

目前(2021 年 4 月)我倾向于使用 remark。remark 是后起之秀,GitHub star 数量不如其他,但是它背后有一套生态系统(unified.js、remark、rehype 等),而且是 Gatsby 大力支持(其官方 Markdown 插件使用 remark)的。Inkdrop 也使用它作为 Markdown 库。

从功能强大和方便性上看,react-markdown 不如其他的。

CSS Tricks 上有一篇对比各 Markdown 规范和库的 文章 (2019)。

在 React 中使用时不一定要用社区封装好的 React 组件,使用 React ref 的能力也可以以传统方式来使用 Markdown 库。这个 jira_clone 项目使用了一个富文本库 Quill 的 例子,可以供参考。

由于 Markdown 可以传 HTML 标签,对于 UGC 的 Markdown 内容,需要对其内容进行过滤(sanity),防止被 XSS。有些 Markdown 库会做过滤(如 markdown-it),但大部分并不处理。推荐的过滤库有 DOMPurify