我正在嘗試在提供文件之前動態連接文件。以下非常簡化的代碼顯示了一種方法:節點流式傳輸,寫入和內存
var http = require('http');
var fs = require('fs');
var start = '<!doctype html><html lang="en"><head><script>';
var funcsA = fs.readFileSync('functionsA.js', 'utf8');
var funcsB = fs.readFileSync('functionsB.js', 'utf8');
var funcsC = fs.readFileSync('functionsC.js', 'utf8');
var finish = '</script></head><body>some stuff here</body></html>';
var output = start + funcsA + funcsB + funcsC + finish;
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(output);
}).listen(9000);
實際上,我如何連接可能取決於userAgent的線索。我的標記和腳本可能是幾百千字節的組合。
我喜歡這種方法,因爲在createServer中沒有發生文件系統I/O。我似乎已經在某處讀到這種方法不像使用fs.createReadStream
方法的流數據那樣有效/低開銷。我似乎記得這與當客戶端無法像Node發送數據一樣快速接收數據時會發生什麼(?)我們似乎能夠從文件系統對象創建可讀流,但不能從內存創建可讀流。是否有可能通過流式方法來完成我上面編碼的內容?隨着文件I/O最初發生,以外的CreateServer功能?
另一方面,我的擔憂並不那麼重要,上述方法可能比流式方法效率低。
謝謝。
是否有可能預先計算文件的這些排列它們的靜態文件存儲提前? –
http://stackoverflow.com/questions/11378059/javascript-string-nodejs-stream-implementation這可能是有用的 – Idipaolo