1. TextDecoderStream/TextEncoderStream 在 Streams 中文本转换的工程取舍
TextDecoderStream/TextEncoderStream 在 Streams 管道中如何做文本转换?工程上如何取舍?
- 基于 TransformStream 的文本编解码
- 多字节字符跨 chunk 边界的处理
- 与整块 decode 的对比取舍
TextDecoderStream 与 TextEncoderStream 是基于 TransformStream 的文本转换器:TextEncoderStream 把字符串流转换为 Uint8Array 流(编码),TextDecoderStream 把二进制流解码为字符串流(含流式解码器,自动处理多字节字符跨 chunk 边界的问题——UTF-8 序列被拆到两个 chunk 时能正确缓冲续接)。工程价值:接入 Streams 管道(fetch 响应体流、文件流、WebSocket 流)做"边下边解码边处理",如流式解析 JSON/CSV、SSR 流式渲染的分块文本处理、日志流的实时展示。取舍:整块 fetch 后用 text()/arrayBuffer() 一次性解码简单直接但内存与延迟高(需全部到达);流式解码内存 O(1)、首字节延迟低,适合大文件与流式场景;TextDecoderStream 的 decoder 配置(fatal 模式、ignoreBOM)在损坏数据时行为明确;注意兼容性(需 TransformStream 支持环境)与编码错误处理。
本题考察流式文本转换的机制。核心是"TransformStream 形态 + 跨 chunk 边界缓冲"两大特性,与一次性解码的对比是取舍落点;能说明流式 JSON 解析场景即展示工程应用。