说说对stream的理解及应用场景
# 是什么
流:是一种数据传输的手段, 是端到端信息交换的一种方式,是有序的逐块读取或者写入数据,内容是字节
# 组成部分
- source 源
- pipe 管道
- dest 目标
# 分类
- 可写流
- 可读流
- 双工流
- 转化流
在NodeJS中HTTP服务器模块中,request 是可读流,response 是可写流。还有fs 模块,能同时处理可读和可写文件流
# 应用场景
- 大文件返回
const server = http.createServer(function (req, res) {
const method = req.method; // 获取请求方法
if (method === 'GET') { // get 请求
const fileName = path.resolve(__dirname, 'data.txt');
let stream = fs.createReadStream(fileName);
stream.pipe(res); // 将 res 作为 stream 的 dest
}
});
server.listen(8000);
- 文件操作
const fs = require('fs')
const path = require('path')
// 两个文件名
const fileName1 = path.resolve(__dirname, 'data.txt')
const fileName2 = path.resolve(__dirname, 'data-bak.txt')
// 读取文件的 stream 对象
const readStream = fs.createReadStream(fileName1)
// 写入文件的 stream 对象
const writeStream = fs.createWriteStream(fileName2)
// 通过 pipe执行拷贝,数据流转
readStream.pipe(writeStream)
// 数据读取完成监听,即拷贝完成
readStream.on('end', function () {
console.log('拷贝完成')
})
- 打包工具的底层操作 如gulp
# FAQ
上次更新: 2021/12/19, 18:05:42