NodeJS 数据流

Stream是NodeJS的原生模块。它的优势是可以让程序更有效的处理庞大的数据。原因在于stream模块可以将数据分段后导入到指定位置。举个例子:如果有一个200MB的文件需要读取并传送给用户,程序可以读取文件然后发送给客户端。但是读取文件的过程需要将整个文件读取并保存至内存后再进行发送,所以内存空间必然会变得拥挤。更好的办法是通过stream模块来完成数据读取和传送。数据流分四种:Readable(可读), Writable(可写), Duplex(读写都可以), Transform(可转换),Node的file system模块变自带可读stream,所以指定文件可以通过fs.createReadStream将文件内容以数据流的格式获取,然后通过pipe函数将数据直接导回:

const fs = require('fs');
const server = require('http').createServer();

server.on('request', (req, res) => {
  const src = fs.createReadStream('./big.file');
  src.pipe(res);
});

server.listen(8000);

(代码样例来自:https://medium.freecodecamp.org/node-js-streams-everything-you-need-to-know-c9141306be93

通过pipe的方式将数据导入res时,内存空间只会被某块数据流占用而非整个文件大小,因此stream带来了性能上的优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值