188 lines
3.8 KiB
Markdown
188 lines
3.8 KiB
Markdown
# Markdown 节点渲染集成说明
|
||
|
||
## 概述
|
||
|
||
这个集成方案为你的 Mind Elixir 思维导图项目添加了 markdown 节点渲染能力,支持:
|
||
|
||
- ✅ **表格渲染** - 完整的 markdown 表格支持
|
||
- ✅ **代码高亮** - 代码块和行内代码
|
||
- ✅ **文本格式** - 粗体、斜体、标题等
|
||
- ✅ **列表** - 有序和无序列表
|
||
- ✅ **链接** - 自动链接渲染
|
||
- ✅ **智能检测** - 自动识别 markdown 语法
|
||
|
||
## 文件结构
|
||
|
||
```
|
||
frontend/src/
|
||
├── utils/
|
||
│ └── markdownRenderer.js # 核心渲染器
|
||
├── components/
|
||
│ ├── MindMap.vue # 主思维导图组件(已集成)
|
||
│ └── MarkdownTest.vue # 测试组件
|
||
└── ...
|
||
```
|
||
|
||
## 使用方法
|
||
|
||
### 1. 在节点中使用 markdown
|
||
|
||
现在你可以在思维导图的节点内容中直接使用 markdown 语法:
|
||
|
||
```markdown
|
||
# 产品价格表
|
||
|
||
| 产品 | 价格 | 库存 |
|
||
|------|------|------|
|
||
| 苹果 | 4元 | 100个 |
|
||
| 香蕉 | 2元 | 50个 |
|
||
|
||
## 技术栈
|
||
|
||
- **前端**: Vue.js 3
|
||
- **后端**: Django
|
||
- **数据库**: PostgreSQL
|
||
|
||
## 代码示例
|
||
|
||
\`\`\`javascript
|
||
function hello() {
|
||
console.log('Hello World!');
|
||
}
|
||
\`\`\`
|
||
```
|
||
|
||
### 2. 测试功能
|
||
|
||
访问 `MarkdownTest.vue` 组件来测试 markdown 渲染功能:
|
||
|
||
```vue
|
||
<template>
|
||
<MarkdownTest />
|
||
</template>
|
||
|
||
<script setup>
|
||
import MarkdownTest from './components/MarkdownTest.vue';
|
||
</script>
|
||
```
|
||
|
||
### 3. 在现有节点中启用
|
||
|
||
系统会自动检测节点内容是否包含 markdown 语法,如果包含,会自动使用 markdown 渲染器。
|
||
|
||
## 核心功能
|
||
|
||
### 智能渲染
|
||
|
||
```javascript
|
||
import { smartRenderNodeContent } from '../utils/markdownRenderer.js';
|
||
|
||
// 自动检测并渲染
|
||
smartRenderNodeContent(nodeElement, content);
|
||
```
|
||
|
||
### 手动渲染
|
||
|
||
```javascript
|
||
import { renderMarkdownToHTML } from '../utils/markdownRenderer.js';
|
||
|
||
// 直接渲染为 HTML
|
||
const html = renderMarkdownToHTML(markdownContent);
|
||
```
|
||
|
||
### 语法检测
|
||
|
||
```javascript
|
||
import { hasMarkdownSyntax } from '../utils/markdownRenderer.js';
|
||
|
||
// 检测是否包含 markdown 语法
|
||
if (hasMarkdownSyntax(content)) {
|
||
// 使用 markdown 渲染
|
||
}
|
||
```
|
||
|
||
## 支持的 Markdown 语法
|
||
|
||
### 表格
|
||
```markdown
|
||
| 列1 | 列2 | 列3 |
|
||
|-----|-----|-----|
|
||
| 数据1 | 数据2 | 数据3 |
|
||
```
|
||
|
||
### 代码块
|
||
```markdown
|
||
\`\`\`javascript
|
||
function test() {
|
||
console.log('Hello');
|
||
}
|
||
\`\`\`
|
||
```
|
||
|
||
### 行内代码
|
||
```markdown
|
||
使用 \`console.log()\` 输出信息
|
||
```
|
||
|
||
### 文本格式
|
||
```markdown
|
||
**粗体文本**
|
||
*斜体文本*
|
||
```
|
||
|
||
### 列表
|
||
```markdown
|
||
- 无序列表项1
|
||
- 无序列表项2
|
||
|
||
1. 有序列表项1
|
||
2. 有序列表项2
|
||
```
|
||
|
||
### 链接
|
||
```markdown
|
||
[链接文本](https://example.com)
|
||
```
|
||
|
||
## 样式定制
|
||
|
||
渲染器会自动添加 CSS 样式,你也可以通过以下类名进行自定义:
|
||
|
||
- `.markdown-content` - 主容器
|
||
- `.markdown-table` - 表格样式
|
||
- `.markdown-code` - 代码块样式
|
||
- `.markdown-math` - 数学公式样式
|
||
|
||
## 注意事项
|
||
|
||
1. **性能**: 大量 markdown 内容可能影响渲染性能
|
||
2. **安全性**: 渲染器允许 HTML,请确保内容来源可信
|
||
3. **兼容性**: 与 Mind Elixir 的拖拽、编辑功能完全兼容
|
||
|
||
## 故障排除
|
||
|
||
### 渲染失败
|
||
- 检查 markdown 语法是否正确
|
||
- 查看浏览器控制台错误信息
|
||
- 使用 `MarkdownTest.vue` 组件测试
|
||
|
||
### 样式问题
|
||
- 检查 CSS 样式是否被覆盖
|
||
- 确保 `markdown-node-styles` 样式已加载
|
||
|
||
### 性能问题
|
||
- 避免在单个节点中放置过多内容
|
||
- 考虑将复杂内容拆分为多个子节点
|
||
|
||
## 扩展功能
|
||
|
||
如果需要更多功能,可以扩展 `markdownRenderer.js`:
|
||
|
||
- 数学公式支持(KaTeX)
|
||
- 图表支持(Mermaid)
|
||
- 更多 markdown 扩展语法
|
||
|
||
## 总结
|
||
|
||
这个集成方案让你可以在保持现有 Mind Elixir 功能的同时,享受强大的 markdown 渲染能力。特别是表格渲染功能,让思维导图可以展示更丰富的数据结构。
|