Robotskirt 是一个 Node.js 实现的 Markdown 渲染器,它支持扩展语法和自定义渲染器。在前端开发中,我们经常需要将 Markdown 格式的文本转化为 HTML 或其他格式,这时候使用 robotskirt 可以简单、快速地完成这个任务。
安装和配置
你可以通过 npm 来安装 robotskirt
npm install robotskirt
之后就可以在 Node.js 中使用它了:
const markdown = require('robotskirt') const html = markdown.render('# Hello world!') console.log(html) // 输出:<h1>Hello world!</h1>
如果你需要自定义一些渲染规则,可以传递一个 renderer
对象给 markdown.Renderer
函数:
-- -------------------- ---- ------- ----- -------- - --- ------------------- ---------------- - -------- ------ ------ - ----- ----------- - ------------------------------------- ---- ------ -------------- --------------------- -------------- ----------------------- ----- --------------------------------------------------- - ----- ---- - ------------------ ----- -------- - -------- -- ----------------- -- --------- ------------------ -------------- ------------------------- ------------------------------------ -----------
在上面的示例中,我们重写了 heading
方法,将标题渲染成一个带有锚点的 HTML 标签。
扩展语法
Robotskirt 支持扩展语法,可以通过引入不同的扩展来解析特定的语法。以下是几个常用的扩展:
GFM 扩展
通过 markdown.Renderer.getExtensions()
方法可以查看已经加载的扩展列表,其中包括 Github Flavored Markdown (GFM) 扩展,它支持任务列表、表格、删除线等语法。
const gfm = markdown.Renderer.getExtensions('gfm') console.log(gfm) // 输出:['tables', 'fenced_code_blocks', 'autolink', 'strikethrough', 'tasklist']
要使用 GFM 扩展,只需要在渲染时传入 gfm
参数即可:
const html = markdown.render('- [x] Task 1\n- [ ] Task 2\n| A | B |\n|---|---|\n| 1 | 2 |', { gfm: true }) console.log(html) // 输出:<ul class="contains-task-list"><li class="task-list-item"><input type="checkbox" disabled="" checked=""> Task 1</li><li class="task-list-item"><input type="checkbox" disabled=""> Task 2</li></ul><table><thead><tr><th>A</th><th>B</th></tr></thead><tbody></tbody></table>
Math 扩展
如果你需要在 Markdown 中插入公式,可以使用 Math 扩展。首先需要安装 katex
包:
npm install katex
然后在渲染时传入 math
参数:
const html = markdown.render('$$\int_{-\infty}^\infty e^{-x^2} dx = \sqrt{\pi}$$', { math: true }) console.log(html) // 输出:<p class="katex"><span class="katex-display"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msubsup><mo>∫</mo><mn>-∞</mn><mn>∞</mn></msubsup><msup><mi>e</mi><mrow><mo>-</mo><msup><mi>x</mi><mn>2</mn></msup></mrow></msup><mi>d</mi><mi>x</mi><mo>=</mo><msqrt><mi>π</mi></msqrt></mrow></math></span><span class="katex-html" aria-hidden="true"><span class="strut > 来源:[JavaScript中文网](https://www.javascriptcn.com/post/45753) ,转载请注明来源 [https://www.javascriptcn.com/post/45753](https://www.javascriptcn.com/post/45753)