Node.js 是一個(gè)基于Chrome JavaScript 運(yùn)行時(shí)建立的一個(gè)平臺(tái)。

Node.js是一個(gè)事件驅(qū)動(dòng)I/O服務(wù)端JavaScript環(huán)境,基于Google的V8引擎,V8引擎執(zhí)行Javascript的速度非常快,性能非常好。

Node.js Stream(流) 語(yǔ)法

Stream 是一個(gè)抽象接口,Node 中有很多對(duì)象實(shí)現(xiàn)了這個(gè)接口。例如,對(duì)http 服務(wù)器發(fā)起請(qǐng)求的request 對(duì)象就是一個(gè) Stream,還有stdout(標(biāo)準(zhǔn)輸出)。

Node.js,Stream 有四種流類(lèi)型:

Readable?- 可讀操作。

Writable?- 可寫(xiě)操作。

Duplex?- 可讀可寫(xiě)操作.

Transform?- 操作被寫(xiě)入數(shù)據(jù),然后讀出結(jié)果。

所有的 Stream 對(duì)象都是 EventEmitter 的實(shí)例。常用的事件有:

data?- 當(dāng)有數(shù)據(jù)可讀時(shí)觸發(fā)。

end?- 沒(méi)有更多的數(shù)據(jù)可讀時(shí)觸發(fā)。

error?- 在接收和寫(xiě)入過(guò)程中發(fā)生錯(cuò)誤時(shí)觸發(fā)。

finish?- 所有數(shù)據(jù)已被寫(xiě)入到底層系統(tǒng)時(shí)觸發(fā)。

Node.js Stream(流) 示例

創(chuàng)建 main.js 文件, 代碼如下:

var fs = require("fs");var data = '';
// 創(chuàng)建可讀流
var readerStream = fs.createReadStream('input.txt');
// 設(shè)置編碼為 utf8。
readerStream.setEncoding('UTF8');
// 處理流事件 --> data, end, and error
readerStream.on('data', function(chunk) {   data += chunk;});
readerStream.on('end',function(){   console.log(data);});
readerStream.on('error', function(err){   console.log(err.stack);});
console.log("程序執(zhí)行完畢");