NodeJS 數據流

Stream是NodeJS的原生模塊。它的優勢是可以讓程序更有效的處理龐大的數據。原因在於stream模塊可以將數據分段後導入到指定位置。舉個例子:如果有一個200MB的文件需要讀取並傳送給用戶,程序可以讀取文件然後發送給客戶端。但是讀取文件的過程需要將整個文件讀取並保存至內存後再進行發送,所以內存空間必然會變得擁擠。更好的辦法是通過stream模塊來完成數據讀取和傳送。數據流分四種:Readable(可讀), Writable(可寫), Duplex(讀寫都可以), Transform(可轉換),Node的file system模塊變自帶可讀stream,所以指定文件可以通過fs.createReadStream將文件內容以數據流的格式獲取,然後通過pipe函數將數據直接導回:

const fs = require('fs');
const server = require('http').createServer();

server.on('request', (req, res) => {
  const src = fs.createReadStream('./big.file');
  src.pipe(res);
});

server.listen(8000);

(代碼樣例來自:https://medium.freecodecamp.org/node-js-streams-everything-you-need-to-know-c9141306be93

通過pipe的方式將數據導入res時,內存空間只會被某塊數據流佔用而非整個文件大小,因此stream帶來了性能上的優化。

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