上一篇文章我們介紹了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、提高性能
更新中。。。