Go每日一库之147:goldmark(Markdown转html)

发布时间 2023-09-29 21:25:41作者: 阿瑞娜

简介

使用 Markdown 书写结构化的文档和评论已经相当流行了,Web 服务需要将用户编写的 Markdown 文本转换为 html 以便浏览器渲染,还常常需要对 Markdown 语法进行自定义扩展以实现个性化的功能。

本期要介绍的 **goldmark **就是 Go 生态中的一款 Markdown 解析器和扩展器,与 GitHub 中被广泛应用的 GFM(GitHub Flavored Markdown) 一样,goldmark 也遵循 CommonMark 标准,且非常易于使用和扩展

goldmark 有以下特点:

  • 完全符合最新版(0.30)的 CommonMark 规范
  • 易扩展,例如使用 goldmark 添加 @username 扩展会非常容易
  • 具备与 cmark 相当的性能
  • 鲁棒性好,goldmark 使用 go-fuzz 进行模糊测试
  • 丰富的内置扩展,如表格、删除线、任务列表和定义列表等
  • 工程仅依赖 Go 标准库

使用举例

使用 goldmark 将基本的 Markdown 转换成 html 非常简单:

转换得到的 html 如下,符合我们的预期:

我们再来试试带扩展文档的转换(本例中的文档使用了 GFM 与脚注),注意这次需要额外引入一些 goldmark 的内置扩展:

本次转换得到的 html 如下:

html 不够直观,用浏览器渲染出来的样式大致如下图,可见脚注、删除线和超链接被正确解析啦!

总结

goldmark 不仅能够帮助我们轻松将 Markdown 文档转换成对应的 html,还内置了非常多的常用扩展支持,使用 goldmark 开发自定义扩展的成本也相对较低,快使用 goldmark 玩转服务端 Markdown 渲染吧!

参考资料