markdown js实现
以下是关于如何使用JavaScript实现Markdown解析和渲染的几种方法:
使用现成的Markdown解析库
marked.js
安装方式:
npm install marked
基本用法:
import { marked } from 'marked';
const html = marked('# Hello Markdown!');
document.body.innerHTML = html;
支持自定义渲染器、异步解析等功能。
markdown-it
安装方式:

npm install markdown-it
基础示例:
const md = require('markdown-it')();
const result = md.render('# Header');
console.log(result);
插件系统丰富,支持语法扩展(如表格、脚注)。
实现简易Markdown解析器
正则表达式基础解析:

function parseMarkdown(mdText) {
// 标题
mdText = mdText.replace(/^# (.*$)/gm, '<h1>$1</h1>');
// 加粗
mdText = mdText.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
return mdText;
}
注意:此方法仅处理基础语法,复杂场景需更完善的正则或状态机实现。
结合DOM渲染
使用DOMPurify防止XSS:
import DOMPurify from 'dompurify';
const cleanHTML = DOMPurify.sanitize(marked.parse(userInput));
实时预览实现
双向绑定示例:
<textarea id="editor"></textarea>
<div id="preview"></div>
<script>
editor.addEventListener('input', () => {
preview.innerHTML = marked.parse(editor.value);
});
</script>
性能优化建议
对于长文档:
- 使用Web Worker进行后台解析
- 实现虚拟滚动只渲染可见部分
- 节流输入事件处理(如Lodash的
_.throttle)
扩展功能方向
- 语法高亮:结合
highlight.js - 自定义组件:通过标记语法映射到Vue/React组件
- 导出支持:生成PDF或图片(需配合
html2canvas等库)
各方案选择取决于项目复杂度,轻量需求可用正则实现,生产环境推荐使用成熟库。






