HTML 转 Markdown 方案
Markdown 渲染为 HTML 的方案有很多。个人在用的桌面端软件是 Typora,从 Windows 到 Debian,再到 macOS,换了三个平台依然在用。然而对于反向转换的库,试过几个不是特别满意。以下推荐符合本人需要的两个项目。功能包括但不限于基本转换、支持自定义转换。
Node.js OR JavaScript
此项目有后端(Node.js)和纯前端版(JavaScript)可用,具体见项目详情。
Go
示例:
// markdown converter
func getConverter() (c *md.Converter) {
converter := md.NewConverter("", true, nil)
// filter emoji <i class="emoji"></i>
// 不转换带有 emoji 样式的 i 标签
// 具体表现为不转换标签本身,但会保留其内容
converter.AddRules(md.Rule{
Filter: []string{"i"},
Replacement: func(content string, selec *goquery.Selection, options *md.Options) *string {
if !selec.HasClass("emoji") {
return nil
}
return md.String(content)
},
})
return converter
}
至于其他语言,要想借助这两个库完成转换,可将以上作为 Web 后端服务实现。(例如:https://github.com/zhanglianxin/turndown-service。)