{"repo":"zhouzxx/towxml-stream-typewriter","free":true,"listed":false,"github":"https://github.com/zhouzxx/towxml-stream-typewriter","clone":"git clone https://github.com/zhouzxx/towxml-stream-typewriter.git","description":"towxml渲染AI大模型流式数据，实现高性能打字效果，避免重复渲染卡顿","language":"JavaScript","stars":71,"topics":["towxml","ai-chatbot","streaming-data","typewriter-effect","markdown"],"license":"MIT","category":"productivity","readme_excerpt":"演示图片 点击查看效果（由于网络问题，gif动图可能不一定能良好地展示，同时视频转的gif后有点卡顿，你直接下载示例在自己电脑上跑更直接） towxml-steam-typewriter ##### 使用有问题请联系 微信：zxx-wwj-zbl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; towxml源码及基于此的流式打字机源码讲解视频 背景与核心痛点 随着 AI 大模型在微信小程序/跨端场景的普及，基于 SSE/WebSocket 流式输出 Markdown 文本成为 AI 聊天机器人的标配能力，但主流的小程序 Markdown 渲染库 towxml 在大模型流式接口场景下存在致命性能问题： - 流式渲染时需 全量解析+重复渲染累计文本 ，解析/渲染开销随文本长度指数级上升； - 长文本场景下出现打字速度骤降、设备发热掉帧、复杂节点重复创建，甚至因 setData 频繁触发导致页面卡死、小程序闪退； - 多轮对话后性能持续劣化，成为小程序 AI 聊天场景的核心技术瓶颈。 💡 如果这个项目帮你解决了实际问题，麻烦点个 ⭐ Star 支持一下吧！ 你的鼓励是我持续优化、迭代新功能的最大动力 解决方案 针对上述痛点，我基于 towxml 源码进行深度魔改，打造了 towxml-stream-typer 组件，核心突破如下： ✅ 核心技术创新 ：提出「局部渲染连续文本」+「样式布局稳定节点复用」两大核心思想，从根源避免重复解析/渲染——仅解析新增文本片段，对已渲染的稳定节点（如段落、列表、代码块）完全复用，不再重复转化和渲染； ✅ 极致性能表现 ：安卓/iOS 双端实测，40 分钟长文本流式渲染全程速度一致，5 万字 Markdown 仅耗时 4 分 30 秒（仅比理论极限慢 20 秒），20 万字多轮对话跨轮次耗时差 ≤ 2 秒，彻底解决「越聊越卡」问题； 该方案从理论上讲，无论再长的文本，都是从头到尾一样的丝滑 支持说明 目前这个代码支持在 原生微信小程序 、 uniapp vue3 、 taro 中使用 npm run build 打包后使用，支持微信开发者工具的代码保护 因为底层模块化的差异， uniapp vue2 中使用会有问题，但并非不能使用，需要做一些处理。个人认为，现在使用uniapp vue2的应该很少了，所以我也没必要提供uniapp vue2的demo示例，如果你有需要，直接加我微信咨询 使用方式 将项目下载下来，进入towxml目录执行 - npm install - npm run build 执行这一步之前可以去config.js中配置是否将echarts、latex、yuml等等打包上去，默认是没有打包进去，默认包大小309k(极限最小体积)左右，打包完成在towxml目录下生成dist文件夹 - 将dist文件夹改名为towxml,放到微信小程序代码或者 uniapp 代码的指定文件夹，作为一个微信小程序组件使用，本质上这就是一个原生微信小程序组件 这里给大家写了一个uniapp和一个原生微信小程序的对话聊天使用示例,大家最好下载下来，模仿着写，里面的注释很详细，并有些最佳实践,如加载历史消息、滚动到底部、终止打印、停留页面终止自动滚动到底部、一键滚动到底部 uniapp使用示例 原生微信小程序使用示例 强烈建议大家参考这两个示例的任何一个进行使用，看使用文档可能费劲，还不如直接看示例代码，里面的注释很详细并有些使用说明 详细说明 1. 由于定制了 towxml 的代码，所以 towxml 组件的","default_branch":null,"files":null,"tree":[],"storefront":"/r/zhouzxx","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/zhouzxx/towxml-stream-typewriter/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}