两个和「终端里显示内容」相关的小版本,一起看能看出方向。
Ink 8.0
用 React 写命令行界面的渲染器。这一版要求 React 19.3 以上,新增可滚动的 Box 视图,stdio 可以接任意 Node 流,并修了一批渲染问题。
可滚动 Box 是刚需。此前的 Ink 应用要做长列表,只能自己算可视区域、手动裁剪,稍不注意就闪烁。有了内置滚动容器,日志查看器、任务列表这类界面写起来会舒服很多。
stdio 接任意流,意味着可以把输出写进文件、管道、测试桩,不只是 process.stdout。这对命令行工具的可测试性是实质改善。
Streamdown 2.7
面向 AI 流式输出的 Markdown 渲染器。这一版的重点是更快的增量代码高亮、块复用、非阻塞的 Mermaid 渲染。
流式渲染的难点在于「内容一直在变」。每来一个 token 就重渲染整篇,性能会崩;只渲染新增部分,又容易破坏未闭合的语法结构(比如代码块还没结束)。块复用就是解决这个:已经稳定的块不重算,只处理尾部在变的部分。
非阻塞 Mermaid 也重要。图表渲染是重活,阻塞主线程会让整个对话界面卡住。放到后台算,先占位再替换,体验会顺很多。
共同的判断
这两个库都在解决同一类问题:内容多、更新频繁、还要保持流畅。做法也一致,把「稳定的部分」与「变化的部分」分开处理。
实用建议
做 AI 对话界面的,Streamdown 值得试;做命令行工具的,如果列表超过一屏,Ink 8.0 的滚动容器能省不少代码。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。