前言
markdown 是一款非常強(qiáng)大且語(yǔ)法簡(jiǎn)潔的標(biāo)記語(yǔ)言。我們(特別是技術(shù)人員)更加青睞它,用它來(lái)寫文檔、博客、文章等。
有些平臺(tái),比如掘金、csdn,技術(shù)人員使用較多,所以他們的編輯器支持 markdown,而有的平臺(tái),例如微信、知乎,則對(duì) markdown 用戶不太友好。
某些工具可以將 markdown 解析成這些平臺(tái)兼容的 html,比如 mdnice。
但對(duì)于已經(jīng)發(fā)布的文章,而你又不是原文作者,你想轉(zhuǎn)發(fā)或者借鑒一段時(shí),排版問(wèn)題也許又會(huì)讓你撓頭不已。要是有一款兼容各大平臺(tái)的 html 的轉(zhuǎn)換器該多好呀!
基于此問(wèn)題,我們調(diào)研了一些 html 轉(zhuǎn) markdown 工具,實(shí)際用起來(lái)發(fā)現(xiàn)效果并不盡人意,所以我們自己開(kāi)發(fā)了 sitdown 。
用法
非開(kāi)發(fā)環(huán)境
如果你只是想快速達(dá)成目的,可以直接進(jìn)入我們的 Demo 頁(yè)。

-
將源 html 粘貼到左邊的輸入框中。
-
選擇 html 來(lái)源的平臺(tái)。
-
點(diǎn)擊 transform。轉(zhuǎn)換的 markdown 就生成在了右邊的框中,并同時(shí)復(fù)制到了你的剪貼板。
開(kāi)發(fā)環(huán)境
// Node
var { Sitdown } = require('sitdown')
var sitdown = new Sitdown()
var markdown = sitdown.HTMLToMD('你的 html')
// ES
import { Sitdown } from 'sitdown/src.esm'
var sitdown = new Sitdown()
var markdown = sitdown.HTMLToMD('你的 html')
如果想轉(zhuǎn)換某個(gè)平臺(tái)的 html,可以使用插件:
例如:
import { Sitdown } from 'sitdown/src.esm';
import { applyJuejinRule } from '@sitdown/juejin/src.esm';
let sitdown = new Sitdown({
keepFilter: ['style'],
codeBlockStyle: 'fenced',
bulletListMarker: '-',
hr: '---',
});
sitdown.use(applyJuejinRule);
搭配 mdnice 使用
mdnice,是一款 markdown 轉(zhuǎn) html 的神器。markdown 經(jīng)過(guò)它的轉(zhuǎn)換,可以生成各種主題的微信 html 和知乎 html。

它直接集成了 sitdown:


結(jié)語(yǔ)
本庫(kù)也是借鑒了開(kāi)源界的思想和某些代碼庫(kù),在一些細(xì)節(jié)上還需要完善和改進(jìn)。所以也是 MIT 協(xié)議,如果大家對(duì) mdnice 相關(guān)項(xiàng)目有興趣,歡迎提供 pr 貢獻(xiàn)。


