什么是node.js流 ?
封面图
•
2026-01-16
•
nodejs
287
0
0
0
**Node.js 流(Stream)** 是 Node.js 中用于处理大量数据的一种机制,它允许你以**分块的方式**读取或写入数据,而不是一次性将整个数据加载到内存中。这种方式非常适合处理大文件、网络数据等场景,因为它可以节省内存并提高性能。 --- ## 🧠 什么是流? 在计算机科学中,**流(Stream)** 是指一个**连续的数据序列**,可以按顺序逐步读取或写入。例如: - 从磁盘读取一个大文件时,你可以逐块读取; - 从网络接收数据时,可以边接收边处理; - 写入文件时,可以边写边保存。 --- ## 🚀 Node.js 中的流类型 Node.js 提供了四种基本的流类型: | 类型 | 说明 | |--------------|----------------------------------------| | **Readable** | 只能读取的数据流(如文件读取) | | **Writable** | 只能写入的数据流(如文件写入) | | **Duplex** | 可读可写的流(如 TCP 连接) | | **Transform**| 读写都可以,且可以修改数据(如压缩) | --- ## 📦 常用的流模块 - `fs` 模块:用于文件读写 - `http` 模块:处理 HTTP 请求和响应 - `stream` 模块:提供流的基类(如 `stream.Readable`, `stream.Writable`) --- ## 💡 流的优点 1. **内存效率高**:不需要一次性将整个数据加载到内存中。 2. **实时处理**:可以一边读取/写入,一边处理数据。 3. **适合大数据**:处理大文件、视频、音频等。 4. **异步非阻塞**:符合 Node.js 的事件驱动模型。 --- ## ✅ 示例:使用流读取文件 ```javascript const fs = require('fs'); // 创建一个可读流 const readableStream = fs.createReadStream('large-file.txt'); // 监听数据事件 readableStream.on('data', (chunk) => { console.log(`Received ${chunk.length} bytes of data.`); }); // 监听结束事件 readableStream.on('end', () => { console.log('No more data to read.'); }); ``` --- ## ✅ 示例:使用流写入文件 ```javascript const fs = require('fs'); // 创建一个可写流 const writableStream = fs.createWriteStream('output.txt'); // 写入数据 writableStream.write('Hello, '); writableStream.write('World!'); // 结束写入 writableStream.end(); // 监听结束事件 writableStream.on('finish', () => { console.log('Write completed.'); }); ``` --- ## 🧩 流的常见操作 - **pipe()**:将一个流的数据“管道”传输到另一个流中(常用于数据转换) - **on('data')**:监听数据块 - **on('end')**:监听流结束 - **on('error')**:监听错误 --- ## 🧠 小结 | 项目 | 说明 | |------------|--------------------------------------| | 定义 | 一种分块处理数据的机制 | | 类型 | Readable / Writable / Duplex / Transform | | 优点 | 高效、实时、适合大数据 | | 应用场景 | 文件读写、HTTP请求、数据转换等 | | 常用方法 | `pipe()`, `on('data')`, `end()` | --- 如果你有具体的应用场景(比如处理文件、网络请求、数据转换等),我可以给你更详细的示例和解释 😊
上一篇:
什么是线程池,nodejs 中哪个库处理它 ?
下一篇:
什么是node.js 中间件 ?
标题录入,一次不能超过6条
留言
评论