4.0 KiB
4.0 KiB
Markdown渲染器使用指南
🎯 功能概述
已成功将AI问答页面的RichText组件替换为自定义的MarkdownRenderer组件,现在支持完整的Markdown语法渲染,让AI回复内容更加丰富和易读。
🔧 实现内容
1. 核心组件
- MarkdownRenderer.tsx: 主要的Markdown渲染组件
- MarkdownRenderer.scss: 对应的样式文件
- MarkdownTest.tsx: 测试组件(可选)
2. 集成到AI聊天
- 替换了原有的RichText组件
- 支持用户消息和AI消息的不同主题
- 保持了原有的实时显示功能
📝 支持的Markdown语法
标题
# 一级标题
## 二级标题
### 三级标题
文本格式
**粗体文本**
*斜体文本*
`行内代码`
代码块
```javascript
function hello() {
console.log("Hello, World!");
}
```
列表
- 无序列表项
- 另一个项目
1. 有序列表项
2. 第二个项目
引用
> 这是一个引用
> 可以多行
链接
[链接文本](https://example.com)
🎨 样式主题
AI消息主题 (ai-markdown)
- 白色背景的代码块
- 蓝色的链接和引用边框
- 清晰的层次结构
- 适合白色背景
用户消息主题 (user-markdown)
- 半透明的代码块
- 白色的文本和链接
- 适配红色渐变背景
- 保持良好的对比度
💻 使用方式
在AI聊天中的应用
<MarkdownRenderer
content={message.query || '正在思考中...'}
className={`message-markdown ${message.type === 'user' ? 'user-markdown' : 'ai-markdown'}`}
/>
独立使用
import MarkdownRenderer from '@/components/MarkdownRenderer';
<MarkdownRenderer
content="# 标题\n这是**粗体**文本"
className="custom-style"
/>
🧪 测试示例
在AI问答中可以测试以下内容:
请用Markdown格式回答:
# JavaScript基础
## 变量声明
JavaScript中有三种变量声明方式:
- `var`: 函数作用域
- `let`: 块级作用域
- `const`: 常量
## 示例代码
```javascript
const name = "World";
let greeting = `Hello, ${name}!`;
console.log(greeting);
注意事项
推荐使用
const和let,避免使用var
更多信息请参考 MDN文档
## 🔍 技术特点
### 1. 轻量级实现
- 无外部依赖
- 纯JavaScript解析
- 高效的文本处理
### 2. 响应式设计
- 适配移动端
- 自动调整字体大小
- 优化的间距和布局
### 3. 性能优化
- 简单的字符串匹配
- 最小化DOM操作
- 避免复杂的正则表达式
### 4. 可扩展性
- 模块化设计
- 易于添加新语法
- 灵活的样式配置
## 🚀 使用效果
### 之前 (RichText)
- 只能显示纯文本
- 无格式化支持
- 内容单调
### 现在 (MarkdownRenderer)
- ✅ 支持标题层次
- ✅ 代码高亮显示
- ✅ 列表和引用
- ✅ 链接和格式化文本
- ✅ 用户/AI消息不同主题
## 📋 测试清单
### 基本功能测试
- [ ] 标题渲染 (H1-H6)
- [ ] 粗体和斜体文本
- [ ] 行内代码和代码块
- [ ] 有序和无序列表
- [ ] 引用块
- [ ] 链接
### 样式测试
- [ ] AI消息主题正确应用
- [ ] 用户消息主题正确应用
- [ ] 响应式布局正常
- [ ] 代码块样式正确
### 集成测试
- [ ] 实时消息显示正常
- [ ] 打字效果保持
- [ ] 滚动功能正常
- [ ] 性能无明显影响
## 🔧 故障排除
### 常见问题
1. **样式不生效**
- 检查className是否正确传递
- 确认SCSS文件已正确导入
2. **解析错误**
- 检查Markdown语法是否正确
- 查看控制台错误信息
3. **性能问题**
- 检查消息长度
- 考虑添加内容截断
### 调试方法
```javascript
// 在控制台查看渲染内容
console.log('Markdown content:', message.query);
🎯 未来扩展
可以考虑添加的功能:
- 表格支持
- 图片渲染
- 数学公式
- 语法高亮
- 自定义主题
- 导出功能