💡 原文中文,约4200字,阅读约需10分钟。
📝

内容提要

本文探讨了在 Vue 中实现实时 Markdown 渲染的方案,采用 markdown-it 库和分块更新技术,解决了性能和用户状态丢失的问题。最终引入 morphdom 库以实现精准更新,提升渲染效率。下一篇将讨论更优雅的解决方案。

🎯

关键要点

  • 需求背景:实现类似 ChatGPT 的对话交互界面,后端通过 SSE 协议推送 Markdown 格式文本。
  • Vue 生态缺乏活跃的 Markdown 渲染库,决定使用 markdown-it 库进行渲染。
  • 基础渲染方案存在性能和用户状态丢失的问题,需改进为分块更新。
  • 分块更新方案通过将 Markdown 按换行符切分,减少全量重渲染,提高性能并保留用户状态。
  • 使用 morphdom 库实现精准更新,解决 Markdown 列表更新时的性能问题。
  • morphdom 通过最小化 DOM 操作,保留未变化的 DOM 节点及其状态。
  • 阶段性成果:从全量刷新到分块更新,再到精准更新,显著提升了渲染效率和用户体验。
  • 下篇预告:将探讨在 Vue 中更优雅的 Markdown 精准更新方案。
🏷️

标签

➡️

继续阅读