最常用、最成熟的 JavaScript Markdown 解析方案是 marked.js,它轻量快速、支持 CommonMark 与 GFM 扩展,兼容浏览器和 Node.js,提供同步/异步渲染、自定义渲染器及安全 sanitize 选项。
JavaScript 中实现 Markdown 解析,最常用、最成熟的方式就是使用 marked.js。它轻量、速度快、支持 CommonMark 规范,且可扩展,适合浏览器端和 Node.js 环境。
根据运行环境选择方式:
marked 函数。npm install markedconst marked = require('marked');(CommonJS)import marked from 'marked';(ES Module)最简单的调用只需一行:
const html = marked('# Hello\n\nThis is **bold** and [a link](/).');结果是带格式的 HTML 字符串,可插入 DOM:
document.getElementById('content').inner
HTML = html;⚠️ 注意:marked 默认不转义 HTML 标签(即允许原始 HTML),如需安全渲染(尤其处理用户输入),应开启 sanitize: true 或配合 DOMPurify 使用。
通过传入配置对象,可定制解析行为:
marked.setOptions({ gfm: true, breaks: true });breaks: true 将换行符转为
)marked.setOptions({ sanitize: true });marked.parse() + DOMPurify.sanitize() 组合。const renderer = new marked.Renderer();
renderer.link = (href, title, text) => `${text}`;
marked.setOptions({ renderer });
marked 支持异步渲染(例如等待 Prism.js 加载后高亮):
marked.setOptions({
async: true,
highlight: function(code, lang) {
return Promise.resolve(Prism.highlight(code, Prism.languages[lang || 'plaintext'], lang));
}
});注意:启用 async: true 后,marked() 返回 Promise,需用 await 或 .then() 处理。
基本上就这些。marked.js 上手快、文档全、生态稳,日常 Markdown 渲染需求基本一招覆盖。