Node.js後端開發 - 基礎篇 #8 流和管道

上一篇文章我們介紹了nodejs的創建和刪除文件、目錄,詳見:Node.js後端開發 - 基礎篇 #7 創建和刪除文件、目錄, 這篇文章我們將介紹nodejs的流和管道,什麼是流呢?下面我們開始舉例編碼!

MacBook-Pro:hello-nodejs luminal$ ls
app.js          count.js        readMe.txt      temp

這裏有個目錄 hello-nodejs,我用一個命令ls,把這個目錄下的所有內容給輸出出來,

它裏面有文件和目錄,那麼我們要對這個輸出的信息進行處理的話,就要用到流和管道,

如果我要查看裏面是不是包含"app"關鍵字,我可以輸入如下命令:ls | grep app

那麼在這種情況下 ls 它就輸出了一個流,它的輸出的流作爲 grep app 這個命令的輸入,

也就是 ls 的輸出作爲 grep app 的輸入。然後我們還可以這麼做體驗一下 ls | grep app | grep js

MacBook-Pro:hello-nodejs luminal$ ls | grep app
app.js
MacBook-Pro:hello-nodejs luminal$ ls | grep app | grep js
app.js
MacBook-Pro:hello-nodejs luminal$ 

如果你熟悉linux,那個標準輸入、輸出也是一種流,這個流有很多應用。還有在nodejs中對http請求的處理,也是用流來實現的,請求就是一個輸入流,響應就是一個輸出流。

nodejs官方api有介紹說所有流都是這個EventEmitter的一個實例,所以說我們這個流,也可以像事件那樣進行處理。比如說放置一些監聽函數之類的。這個流有很多應用,比如說處理數據。

最典型的就是http服務的時候我們會用到,那個數據的請求和響應就是流的一種體現。還有對數據進行處理,比如說我們流行的構建工具webpack、gulp之類的,它們也大量運用了流這個技術,等下我們會實現文件打包和壓縮,它也是用流來實現的。

然後流的第二個應用,它就是能提高性能,在前幾篇文章我們有介紹到文件系統的讀寫命令來讀取文件內容,但是那些命令它是一次性把文件放到內存中,如果你的文件很大的時候,那麼這種命令就不太合適了。要用流來處理,這個流的讀取,它會把文件的內容,放到buffer緩衝區中,它可以一邊放一邊處理,以此提高性能!所以說流有兩個比較好的用途:1、處理數據  2、提高性能

更新中。。。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章