Node.js 是一個(gè)基於Chrome JavaScript 執(zhí)行階段建立的平臺(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 中有很多物件實(shí)作了這個(gè)接口。例如,對(duì)http 伺服器發(fā)起請(qǐng)求的request 物件就是一個(gè) Stream,還有stdout(標(biāo)準(zhǔn)輸出)。
Node.js,Stream 有四種流類型:
Readable?- 可讀操作。
Writable?- 可寫入操作。
Duplex?- 可讀可寫入操作.
Transform?- 操作被寫入數(shù)據(jù),然後讀出結(jié)果。
所有的 Stream 物件都是 EventEmitter 的實(shí)例。常用的事件有:
data?- 當(dāng)有資料可讀時(shí)觸發(fā)。
end?- 沒(méi)有更多的資料可讀時(shí)觸發(fā)。
error?- 在接收和寫入過(guò)程中發(fā)生錯(cuò)誤時(shí)觸發(fā)。
finish?- 所有資料已寫入到底層系統(tǒng)時(shí)觸發(fā)。
Node.js Stream(流) 範(fàn)例
建立 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í)行完畢");