简介
在前端开发中,我们经常需要将 Markdown 格式的文本渲染到网页中。一个 Markdown 格式的文档中,经常需要给标题添加锚点,以便用户可以方便的通过链接跳转到文档的某个部分。本文介绍一款 npm 包 js-slate-markdown-anchor-serializer
,帮助更快速、更方便地在 Markdown 格式的文档中添加标题锚点。
安装
在项目中安装 js-slate-markdown-anchor-serializer
:
npm install js-slate-markdown-anchor-serializer --save
使用方法
整体使用
-- -------------------- ---- ------- ----- ---------------- - ---------------------------------------------- ----- -------- - -- --- ----- -- --- ----- --- --- ----- - ----- ------- - --------------------------------------- --------------------
fromMarkdown
方法可以将 Markdown 字符串转换为对象,对象的结构如下:
-- -------------------- ---- ------- - ------- -------- ----------- - ------- ----------- ------- --- -------- -- ------- ---------- ------- - -------- -- ----- ------ ------ ---- -- -------- -- ------- ------- ------- ------ -------- -- -- -- - ------- ---------- ------- - -------- -- ----- ------ ------ ---- -- -------- -- ------- ------- ------- ------ -------- -- -- -- - ------- ---------- ------- - -------- -- ----- ------ ------ ---- -- -------- -- ------- ------- ------- ------ -------- -- -- -- - -
转换后的对象包含了标题的层级、标题名称、标题 id 等信息,便于后续生成锚点链接。
单独使用
-- -------------------- ---- ------- ----- ---------------- - ---------------------------------------------- ----- ------- - - ----- ---------- ----- - ------ -- --- ------ ---- ---- -- ------ -- ----- ------- ----- ------ ------ -- -- - ----- ------- - ----------------------------------- --------------------
fromSlate
方法可以将 slate 对象转换为 html 片段:
<h2 id="标题二"> <a href="#标题二"> <span class="anchor-icon">#</span> </a> 标题二 </h2>
该方法接收一个 slate 对象,返回对应的标题 html 片段,data.id
作为 a 标签的 href 属性值。为保证标题 id 的一致性,建议使用 fromMarkdown
方法转换整个 markdown 文章。
实际使用示例
在文章生成目录
-- -------------------- ---- ------- ----- ---------------- - ---------------------------------------------- ----- -------- - -- --- ----- -- --- ----- --- --- ----- - ----- --- - -- ----- ------- - --------------------------------------- ----------------------------------- -- - -- ---------- --- ---------- - ---------- --- ------------- ----- ------------------- ------ --------------- -- - -- ----------------
fromMarkdown
方法转换得到的 slate 对象中包含了每个标题的 id、名称和深度,可以使用这些信息生成文章的目录。
为每个标题添加锚点
-- -------------------- ---- ------- ----- ---------------- - ---------------------------------------------- ----- -------- - -- --- ----- -- --- ----- --- --- ----- - ----- ------- - --------------------------------------- --------------------------------------------------------------
使用 fromMarkdown
方法转换得到的 slate 对象,包含了标题的 id 信息,可以使用 stringifySlate
方法将其转换成包含锚点的 html 片段:
-- -------------------- ---- ------- --- --------- -- ------------ ----- ---------------------------- ---- --- ----- --- --------- -- ------------ ----- ---------------------------- ---- --- ----- --- --------- -- ------------ ----- ---------------------------- ---- --- -----
通过这种方法,可以为每个标题自动生成锚点,方便用户通过链接跳转到对应位置。
总结
js-slate-markdown-anchor-serializer
包提供了一种方便快捷的方式为 Markdown 格式的文章添加锚点。使用该包,我们可以轻松实现目录自动生成、为正文添加锚点等场景。希望本文对于前端开发工作有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055d1e81e8991b448dabd8