什么是流?
- 是一种 以高效的方式处理读 / 写文件、网络通信 或任何类型的端到端的信息交换。当告诉程序读取文件时,它可以 逐个片段 的读取并处理(而无需全部保存到内存中)
- Node.js 的 stream 模块 提供了构建所有流 API 的基础。 所有的流都是 EventEmitter 的实例。
内存效率: 无需加载大量数据到内存即可处理。
时间效率: 当获得数据之后可立即开始处,而不必等到整个数据 有效负载才开始。
示例: 从磁盘读取文件
const http = require('http')
const fs = require('fs')
const server = http.createServer((req, res) => {
const stream = fs.createReadStream(__dirname + '/data.txt')
stream.pipe(res) // 将数据块流式传入http客户端(获取来源流,并将其通过管道传输到目标流。)
})
server.listen(3000)
// pipe() 方法的返回值是目标流,这是非常方便的事情,它使得可以链接多个 pipe() 调用
src.pipe(dest1).pipe(dest2)