# 实施计划:Mermaid 代码块渲染修复 ## 概述 本实施计划旨在修复 Argon WordPress 主题中 Mermaid 图表渲染的关键问题,并增强交互体验。 **实施策略:** - 问题优先:优先修复 PJAX 渲染和语法错误问题 - 功能完善:添加导出、全屏查看等功能 - 体验优化:优化交互体验和视觉效果 - 质量保证:确保代码质量和性能 ## 任务 ### 阶段 1: 核心问题修复 - [ ] 1. 修复 PJAX 页面切换后 Mermaid 不渲染的问题 - [x] 1.1 实现 Mermaid 代码块检测函数 _需求:3.1-3.5_ - [~] 1.2 优化 PJAX complete 事件处理 _需求:1.1-1.5_ - [~] 1.3 添加渲染状态标记,避免重复渲染 _需求:3.5_ - [~] 1.4 测试 PJAX 跳转后的渲染效果 _需求:1.1-1.5_ - [ ] 2. 修复 Mermaid 语法解析错误 - [~] 2.1 实现 Mermaid 库加载等待机制 _需求:2.6, 4.1-4.2_ - [~] 2.2 优化 Mermaid 初始化配置 _需求:2.1-2.4_ - [~] 2.3 添加语法错误处理和友好提示 _需求:2.5, 7.1-7.4_ - [~] 2.4 测试各种图表类型(flowchart、erDiagram、stateDiagram) _需求:2.2-2.4_ - [ ] 3. 实现错误处理和降级方案 - [~] 3.1 创建错误提示组件 _需求:7.1-7.4_ - [~] 3.2 实现错误日志记录 _需求:14.1-14.6_ - [~] 3.3 添加原始代码查看功能 _需求:7.2_ - [~] 3.4 测试各种错误场景 _需求:7.1-7.6_ ### 阶段 2: 交互功能实现 - [ ] 4. 实现工具栏和基础交互 - [~] 4.1 创建工具栏组件 _需求:11.1-11.7_ - [~] 4.2 实现工具栏自动显示/隐藏 _需求:11.1-11.2_ - [~] 4.3 添加按钮提示(tooltip) _需求:11.4_ - [~] 4.4 优化工具栏样式(半透明背景) _需求:11.3_ - [ ] 5. 实现缩放功能 - [~] 5.1 实现鼠标滚轮缩放 _需求:12.1-12.3_ - [~] 5.2 实现缩放按钮(放大、缩小、重置) _需求:12.4_ - [~] 5.3 实现双击智能缩放 _需求:12.5_ - [~] 5.4 优化缩放动画和性能 _需求:12.2-12.3_ - [ ] 6. 实现拖拽功能 - [~] 6.1 实现鼠标拖拽移动 _需求:12.6-12.8_ - [~] 6.2 优化拖拽视觉反馈 _需求:12.6-12.7_ - [~] 6.3 智能启用/禁用拖拽 _需求:12.8_ - [~] 6.4 使用 requestAnimationFrame 优化性能 _需求:8.1-8.5_ ### 阶段 3: 高级功能实现 - [ ] 7. 实现图表导出功能 - [~] 7.1 创建导出菜单组件 _需求:5.1-5.3_ - [~] 7.2 实现 PNG 导出 _需求:5.4_ - [~] 7.3 实现 SVG 导出 _需求:5.5_ - [~] 7.4 添加导出错误处理 _需求:5.6, 7.5_ - [ ] 8. 实现全屏查看功能 - [~] 8.1 集成 Zoomify 图片查看组件 _需求:6.1-6.3_ - [~] 8.2 实现全屏按钮和事件处理 _需求:6.1-6.2_ - [~] 8.3 支持键盘快捷键(ESC 退出) _需求:6.4_ - [~] 8.4 测试全屏模式下的交互功能 _需求:6.3-6.5_ - [ ] 9. 实现主题同步功能 - [~] 9.1 监听主题切换事件 _需求:9.1-9.3_ - [~] 9.2 实现主题自动切换 _需求:9.1-9.2_ - [~] 9.3 保持图表状态(缩放、位置) _需求:9.4_ - [~] 9.4 测试主题切换效果 _需求:9.1-9.5_ ### 阶段 4: 性能和体验优化 - [ ] 10. 优化渲染性能 - [~] 10.1 实现批量渲染 _需求:8.1_ - [~] 10.2 实现延迟加载(优先渲染可见图表) _需求:8.2_ - [~] 10.3 添加加载动画 _需求:8.3, 11.7_ - [~] 10.4 优化渲染流程,避免阻塞 _需求:8.1-8.4_ - [ ] 11. 优化移动端体验 - [~] 11.1 适配移动端工具栏 _需求:10.1_ - [~] 11.2 实现触摸手势支持(双指缩放、单指拖拽) _需求:10.2_ - [~] 11.3 优化触摸事件响应 _需求:10.5_ - [~] 11.4 测试移动端交互体验 _需求:10.1-10.5_ - [ ] 12. 实现生命周期管理 - [~] 12.1 实现 PJAX 集成(清理和重新渲染) _需求:8.5, 16.1-16.5_ - [~] 12.2 实现资源清理函数 _需求:16.1-16.5_ - [~] 12.3 移除事件监听器,避免内存泄漏 _需求:16.2_ - [~] 12.4 测试内存泄漏情况 _需求:16.1-16.5_ ### 阶段 5: 代码质量和测试 - [ ] 13. 代码质量检查 - [~] 13.1 添加 JSDoc 注释 _需求:13.2_ - [~] 13.2 遵循项目代码规范(Tab 缩进、单引号等) _需求:13.1_ - [~] 13.3 使用 let/const 替代 var _需求:13.3_ - [~] 13.4 优化错误处理和日志记录 _需求:13.4, 14.1-14.6_ - [~] 13.5 代码审查和重构 _需求:13.1-13.7_ - [ ] 14. 兼容性测试 - [~] 14.1 测试主流浏览器(Chrome、Firefox、Safari、Edge) _需求:15.1-15.5_ - [~] 14.2 测试移动端浏览器(iOS Safari、Android Chrome) _需求:15.4_ - [~] 14.3 测试降级方案 _需求:15.1-15.5_ - [~] 14.4 修复兼容性问题 _需求:15.1-15.5_ - [ ] 15. 功能测试 - [~] 15.1 测试 PJAX 页面切换 - [~] 15.2 测试各种图表类型渲染 - [~] 15.3 测试交互功能(缩放、拖拽、全屏) - [~] 15.4 测试导出功能(PNG、SVG) - [~] 15.5 测试错误处理和降级方案 - [ ] 16. 性能测试 - [~] 16.1 测试渲染性能(多图表页面) - [~] 16.2 测试内存占用和泄漏 - [~] 16.3 测试交互性能(缩放、拖拽流畅度) - [~] 16.4 优化性能瓶颈 - [ ] 17. 文档和总结 - [~] 17.1 更新代码注释 - [~] 17.2 编写使用文档 - [~] 17.3 记录已知问题和限制 - [~] 17.4 总结优化效果 ## 实施优先级 **P0 (必须完成 - 核心问题修复):** - 任务 1: 修复 PJAX 渲染问题 - 任务 2: 修复语法解析错误 - 任务 3: 实现错误处理 **P1 (重要 - 基础交互):** - 任务 4: 实现工具栏 - 任务 5: 实现缩放功能 - 任务 6: 实现拖拽功能 - 任务 12: 生命周期管理 **P2 (可选 - 高级功能):** - 任务 7: 图表导出 - 任务 8: 全屏查看 - 任务 9: 主题同步 **P3 (增强 - 优化和测试):** - 任务 10: 性能优化 - 任务 11: 移动端优化 - 任务 13-17: 质量保证和测试 ## 预期效果 ### 问题修复 - ✅ PJAX 页面切换后 Mermaid 图表正常渲染 - ✅ 语法解析错误得到修复 - ✅ 错误提示友好,保留原始代码 ### 功能增强 - ✅ 支持图表导出(PNG、SVG) - ✅ 支持全屏查看(复用图片查看组件) - ✅ 支持缩放和拖拽 - ✅ 工具栏自动显示/隐藏 ### 体验优化 - ✅ 交互流畅,响应迅速 - ✅ 移动端体验良好 - ✅ 主题自动同步 - ✅ 加载动画和视觉反馈 ### 代码质量 - ✅ 代码规范,注释完整 - ✅ 错误处理完善 - ✅ 性能优化到位 - ✅ 无内存泄漏 ## 注意事项 1. **向后兼容**:保持现有 API 和配置不变 2. **性能优先**:避免阻塞主线程,使用批量渲染 3. **错误处理**:所有异步操作都要有错误处理 4. **内存管理**:确保事件监听器和 DOM 引用被正确清理 5. **测试充分**:测试各种边缘情况和错误场景