1. 程式人生 > >node中stream與buffer的關係

node中stream與buffer的關係

JavaScript 語言自身只有字串資料型別,沒有二進位制資料型別。

但在處理像TCP流或檔案流時,必須使用到二進位制資料。因此在 Node.js中,定義了一個 Buffer 類,該類用來建立一個專門存放二進位制資料的快取區。

所以在一個應用程式中,stream是一組有序的、有起點和終點的位元組資料的傳輸手段。

Buffer 用於建立一個專門存放二進位制資料的快取區

Stream 有四種流型別,且所有的 Stream 物件都是 EventEmitter 的例項: 
- Readable – 可讀操作。 
- Writable – 可寫操作。 
- Duplex – 可讀可寫操作. 
- Transform – 操作被寫入資料,然後讀出結果

在應用中,因為在後端與前端、後端的IO中,每當需要在 Node.js 中處理I/O操作中移動的資料時,就有可能使用 Buffer 庫,很多時候會出現資料過大,不能一次性讀取的問題。會導致程式的等待時間過長,因此,流操作(stream)便營運而生。

在readable和writable的Stream之間築起溝通,如果僅僅使用事件方法來進行的話,程式碼會顯得很冗雜,因此需要出現pipe(管道)方法來進行。

readable.pipe(writable);