本篇文章主要介紹了理解nodejs的stream和pipe機制的原理和實現,具有一定的參考價值,感興趣的小伙伴們可以參考一下
##前言
前幾天別人請教我關於pipe的問題,我發現我雖然用了nodejs很久,但是由於每次用的不多所以經常迴避stream的使用,導致一直不熟,現在重新學習整理一下相關知識。透過nodeschool學習stream
nodeschool有一個stream-adventure教學教導stream的使用,很簡單簡單stream進行pipe
首先,我們可以透過管道將輸入定位到輸出,輸入輸出可以是控制台或檔案流或http請求,例如1 2 3 |
|
pipe中間進行處理
如果我們想要在管道中間進行處理,例如想將輸入的字串變成大寫寫到輸出裡,我們可以使用一些可以作為中間處理的框架,例如through2就很方便1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
#stream轉換成普通回調
當我們輸入是流,而輸出是普通函數,我們需要把輸入流轉換成普通的buffer,這時可以試試concat-stream函式庫
#
1 2 3 4 5 6 7 |
|
類似stdin和fs,http由於其特性也適合使用流,所以其自帶類似特性
1 2 3 4 |
|
既作為輸入也作為輸出的流
request框架實作瞭如下功能,將一個串流pipe到request請求中,然後將流的內容髮送給伺服器,然後傳回作為流供其他程式碼使用,實作如下
1 2 3 |
|
分支管道
下邊是一個例子,這個例子將輸入管道中html包含loud class的元素放入另一個管道進行大寫操作,然後最後合併成輸出
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 |
|
以上是nodejs中stream和pipe的深度理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!