作為前端,我們常常會和 Stream 有著頻繁的接觸。比如使用 gulp 對項目進(jìn)行構(gòu)建的時候,我們會使用 gulp.src 接口將匹配到的文件轉(zhuǎn)為 stream(流)的形式,再通過 .pipe() 接口對其進(jìn)行鏈?zhǔn)郊庸ぬ幚恚?/p>

或者比如我們通過 http 模塊創(chuàng)建一個 HTTP 服務(wù):

const http = require('http');
http.createServer( (req, res) => {  //...}).listen(3000);

此處的 req 和 res 也屬于 Stream 的消費(fèi)接口(前者為 Readable Stream,后者為 Writable Stream)。

事實上像上述的 req/res,或者 process.stdout 等接口都屬于 Stream 的實例,因此較少存在情況,是需要我們手動引入 Stream 模塊的,例如:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

//demo1.js'use strict';
const Readable = require('stream').Readable;
const rs = Readable();
const s = 'VaJoy';
const l = s.length;
let i = 0;
rs._read = ()=>{    if(i == l){
        rs.push(' is my name');        return rs.push(null)
    }
    rs.push(s[i++])
};
rs.pipe(process.stdout);

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

如果不太能讀懂上述代碼,或者對 Stream 的概念感到模糊,那么可以放輕松,因為本文會進(jìn)一步地對 Stream 進(jìn)行剖析,并且談?wù)勚苯邮褂盟赡軙嬖诘囊恍﹩栴}(這也是為何 gulp 要使用 through2 的原因)

另外本文的示例均可在我的

網(wǎng)友評論