简介
在前端开发中,markdown是一种通用的文本标记语言,可以方便地创建和编辑文档。而npm上有一个叫做marked
的包,能够将Markdown语法解析成HTML代码。本文就是介绍如何使用这个包。
安装
使用npm
命令进行安装:
npm install marked --save
使用方法
使用require
函数引入marked
包:
const marked = require('marked');
基本用法
使用marked
方法将Markdown语法字符串转换为HTML代码:
const markdownString = '# Hello, world!\n\nThis is a **bold** text.'; const htmlString = marked(markdownString); console.log(htmlString); // Output: "<h1>Hello, world!</h1>\n<p>This is a <strong>bold</strong> text.</p>\n"
高级用法
设置选项
可以通过setOptions
方法设置marked
的选项:
-- -------------------- ---- ------- ------------------- ---- ----- ------- ----- ------- ------ --------- ------ --------- ------ ----------- ----- ------------ ------ ------ ----- ---
这里的各个选项含义分别是:
gfm
(Github风格的Markdown):启用一些Github扩展,例如支持任务列表、表格等。tables
:启用表格。breaks
:启用回车符换行。pedantic
:更严格的解析,不支持容错性较强的语法。sanitize
:将不安全的HTML标签替换为<p>
。smartLists
:启用智能列表(例如可以使用-
代替<ul>
)。smartypants
:启用智能标点(例如将--
转换为—
)。xhtml
:输出XHTML格式的HTML代码。
自定义渲染器
可以通过Renderer
类自定义渲染器,从而控制渲染出来的HTML代码:
-- -------------------- ---- ------- ----- ---------- ------- --------------- - ------------- ------ - ------ ----------------------------------------------- - - ----- -------------- - -- ------ -------- ----- ---------- - ---------------------- - --------- --- ------------ --- ------------------------ -- ------- ----------- --------------
这里的MyRenderer
类中重写了heading
方法,使得所有标题都以大写字母呈现。
示例代码
下面是一个完整的例子,将文章中所有Markdown代码块解析成HTML代码并输出到网页上:
-- -------------------- ---- ------- --------- ----- ------ ------ ----- ---------------- ----------------------- ------- --------------------------------------------------- ------- ------ --------- --------------- ------ ------ ---- -- - -------- ----- ------------- ----- ------ - ------------------ -------------------------- ----------
- Item 1
- Item 2
Option | Description |
---|---|
data | path to data files to supply the data that will be passed into templates. |
结论
marked
是一个十分实用的npm包,能够将Markdown语法转换为HTML代码。通过本文的介绍,你已经掌握了如何使用它解析Markdown字符串,并且了解了一些高级用
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/32342