starwait/docs/f01-mrkdown/02-markdown-it.md
2025-04-28 18:02:35 +08:00

72 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

`markdown-it` 是另一个非常流行的前端 Markdown 解析库,具有以下特色功能:
> github star 19.5
>
> https://github.com/markdown-it/markdown-it
### 1. **高度可配置**
- `markdown-it` 提供了丰富的配置选项,允许开发者根据需要调整 Markdown 解析的行为。例如,可以启用或禁用特定的语法规则、调整解析器的行为等。
### 2. **支持 CommonMark 和 GitHub Flavored Markdown (GFM)**
- `markdown-it` 默认支持 CommonMark 标准,并且可以通过插件支持 GitHub Flavored Markdown (GFM),包括表格、任务列表、删除线等扩展语法。
### 3. **插件系统**
- `markdown-it` 拥有强大的插件系统,社区中有大量的插件可以扩展其功能。例如,支持数学公式、流程图、脚注、表格等高级功能。
### 4. **高性能**
- `markdown-it` 的解析速度非常快,适合在浏览器和 Node.js 环境中使用。它通过高效的解析算法和优化,能够在短时间内处理大量的 Markdown 文本。
### 5. **支持自定义渲染器**
- `markdown-it` 允许开发者自定义渲染器,从而可以灵活地控制 Markdown 元素的输出格式。你可以根据需要覆盖默认的渲染逻辑,实现自定义的 HTML 输出。
### 6. **支持语法高亮**
- `markdown-it` 内置支持语法高亮,可以通过配置使用 `highlight.js` 或其他语法高亮库来为代码块添加高亮效果。
### 7. **安全性**
- `markdown-it` 默认会对输出的 HTML 进行转义,防止 XSS跨站脚本攻击等安全问题。你可以通过配置禁用或自定义转义行为。
### 8. **支持异步渲染**
- `markdown-it` 支持异步渲染,允许在解析过程中执行异步操作(如获取远程资源),并返回 Promise 对象。
### 9. **跨平台**
- `markdown-it` 可以在浏览器和 Node.js 环境中使用,适用于各种前端和后端项目。
### 10. **良好的社区支持**
- `markdown-it` 拥有活跃的社区和丰富的文档,开发者可以轻松找到相关的教程、示例和插件。
### 11. **支持自定义 Tokenizer**
- `markdown-it` 允许开发者自定义 Tokenizer从而可以灵活地处理 Markdown 中的各种元素。例如,你可以自定义如何解析链接、图片等。
### 12. **支持多语言**
- `markdown-it` 支持多语言,可以通过插件支持不同语言的 Markdown 扩展语法。
### 示例代码
```javascript
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();
// 基本用法
const html = md.render('# Hello, World!');
console.log(html); // 输出: <h1>Hello, World!</h1>
// 使用插件
const mdWithPlugins = new MarkdownIt()
.use(require('markdown-it-task-lists'))
.use(require('markdown-it-footnote'));
const pluginHtml = mdWithPlugins.render('- [x] Task 1\n- [ ] Task 2');
console.log(pluginHtml); // 输出: <ul class="contains-task-list"><li class="task-list-item"><input type="checkbox" checked="" disabled=""> Task 1</li><li class="task-list-item"><input type="checkbox" disabled=""> Task 2</li></ul>
// 自定义渲染器
const customRenderer = new MarkdownIt();
customRenderer.renderer.rules.heading_open = function (tokens, idx, options, env, self) {
return `<h${tokens[idx].hLevel} class="custom-heading">`;
};
const customHtml = customRenderer.render('# Custom Heading');
console.log(customHtml); // 输出: <h1 class="custom-heading">Custom Heading</h1>
```
### 总结
`markdown-it` 是一个功能强大且灵活的 Markdown 解析库,适合各种需要 Markdown 解析的场景。它的高度可配置性、插件系统和丰富的功能使其成为前端开发者的首选工具之一。