原生JavaScript Markdown解析器 - 二次开发指南
版本: 1.0.1
更新时间: 2026年3月25日
<script src="MDParser.js"></script>
<script>
var parser = new MDParser();
var html = parser.parse('# Hello World');
document.body.innerHTML = html;
</script>var MDParser = require('./MDParser.js');
var parser = new MDParser();
var html = parser.parse('# Hello World');
console.log(html);创建MDParser实例。
参数:
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| options | Object | 否 | {} | 配置选项对象 |
返回值: MDParser 实例
示例:
// 使用默认配置
var parser = new MDParser();
// 自定义配置
var parser = new MDParser({
sanitize: true,
highlight: true,
gfm: true,
tables: true
});将Markdown文本解析为HTML。
语法:
var html = parser.parse(markdown);参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| markdown | string | 是 | Markdown格式的文本 |
返回值: string - 转换后的HTML字符串
示例:
var parser = new MDParser();
// 解析简单文本
var html1 = parser.parse('# 标题');
// 返回: <h1>标题</h1>
// 解析复杂内容
var html2 = parser.parse(`
# 主标题
这是一个**粗体**和*斜体*的示例。
## 代码示例
\`\`\`javascript
function hello() {
console.log('Hello!');
}
\`\`\`
## 无序列表
- 列表项1
- 列表项2
- 列表项3
## 有序列表
1. 第一项
2. 第二项
3. 第三项
## 任务列表
- [x] 已完成
- [ ] 未完成
## 区块引用
> 这是引用内容
## 表格
| 名称 | 版本 | 状态 |
|------|------|------|
| MDParser | 1.0.1 | 正式版 |
`);| 选项名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| sanitize | boolean | true | 是否启用HTML安全过滤 |
| highlight | boolean | true | 是否启用代码高亮 |
| highlightTheme | string | 'github' | 代码高亮主题(暂支持 github) |
| linkify | boolean | true | 是否自动转换URL为链接 |
| breaks | boolean | false | 是否将单个换行转为<br> |
| gfm | boolean | true | 是否启用GitHub风格Markdown |
| tables | boolean | true | 是否支持表格语法 |
| tasklists | boolean | true | 是否支持任务列表 |
设置配置选项。
语法:
parser.setOptions(options);示例:
var parser = new MDParser();
// 修改配置
parser.setOptions({
highlightTheme: 'github',
breaks: true,
tables: false
});获取当前配置。
语法:
var options = parser.getOptions();返回值: Object - 当前配置对象的副本
示例:
var parser = new MDParser();
var currentOptions = parser.getOptions();
console.log(currentOptions.highlight); // true转义HTML特殊字符,防止XSS攻击。
语法:
var escaped = parser.escapeHtml(text);参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| text | string | 是 | 需要转义的文本 |
返回值: string - 转义后的文本
示例:
var parser = new MDParser();
var safe = parser.escapeHtml('<script>alert("XSS")</script>');
// 返回: <script>alert("XSS")</script>获取解析器版本号。
语法:
var version = parser.getVersion();返回值: string - 版本号
示例:
var parser = new MDParser();
console.log(parser.getVersion()); // "1.0.1"获取支持的特性列表。
语法:
var features = parser.getFeatures();返回值: Array - 支持的特性名称数组
示例:
var parser = new MDParser();
var features = parser.getFeatures();
console.log(features);
// ["headings", "blockquotes", "lists", "tasklists", "codeblocks", ...]<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MDParser 示例</title>
<script src="MDParser.js"></script>
</head>
<body>
<textarea id="editor" placeholder="在此输入Markdown..."></textarea>
<div id="preview"></div>
<script>
var parser = new MDParser({
highlight: true,
gfm: true
});
var editor = document.getElementById('editor');
var preview = document.getElementById('preview');
editor.addEventListener('input', function() {
var html = parser.parse(editor.value);
preview.innerHTML = html;
});
</script>
</body>
</html>var parser = new MDParser({
sanitize: true,
highlight: true,
gfm: true,
tables: true,
tasklists: true
});
var markdownContent = `
# 我的博客文章
**作者**: 张三
**日期**: 2026-03-25
## 简介
这是一篇使用Markdown编写的示例文章。
## 代码示例
\`\`\`javascript
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
console.log(fibonacci(10)); // 55
\`\`\`
## 任务清单
- [x] Markdown解析
- [x] 代码高亮
- [x] 表格支持
- [ ] 更多功能开发中
## 表格
| 功能 | 状态 | 说明 |
|------|------|------|
| 标题解析 | 已完成 | 支持 H1-H6 |
| 列表解析 | 已完成 | 支持有序和无序 |
| 代码高亮 | 已完成 | 内置语法高亮 |
## 链接与图片
[访问GitHub](https://github.com)

## 引用
> 感谢使用MDParser!
`;
var html = parser.parse(markdownContent);
document.getElementById('article').innerHTML = html;var parser = new MDParser({
sanitize: true, // 必须开启,防止XSS
gfm: true,
tasklists: false // 评论中不需要任务列表
});
function renderComment(markdownText) {
return parser.parse(markdownText);
}
// 使用
var commentHTML = renderComment('用户说: 这篇文章**太棒了**');
document.getElementById('comment').innerHTML = commentHTML;# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题**粗体文字**
*斜体文字*
~~删除线文字~~无序列表:
- 项目一
- 项目二
- 嵌套项目有序列表:
1. 第一项
2. 第二项
3. 第三项任务列表:
- [x] 已完成
- [ ] 未完成行内代码:
这是一段 `行内代码`代码块:
```javascript
function hello() {
console.log('Hello');
}
```支持的代码语言: javascript, js, python, html, css, json, sql, bash
[链接文字](https://example.com)
图片 alt 文本可选
> 这是引用内容
> 可以多行| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 内容 | 内容 | 内容 |---https://example.com会自动转换为可点击链接
使用 \* 转义星号
使用 \\ 转义反斜杠-
安全性: 建议将
sanitize选项保持为true,以防止XSS攻击。 -
性能: 对于大量内容,建议使用防抖(debounce)优化渲染频率。
-
代码高亮: 支持 JavaScript、Python、HTML、CSS、JSON、SQL、Bash 等语言的语法高亮。
-
兼容性: 解析器使用原生JavaScript编写,支持所有现代浏览器。
- 修复代码块、表格、引用、链接、图片渲染问题
- 修复列表内行内元素渲染问题
- 优化代码高亮逻辑
- 改进正则表达式匹配
- 初始版本发布
- 支持所有常用Markdown语法
- 支持代码高亮
- 支持GFM扩展(表格、任务列表)
- 支持多种配置选项