Sto cercando di creare un file server statico in nodejs più come esercizio per comprendere node che come server perfetto. Conosco bene progetti come Connect e node-static e intendo utilizzare queste librerie per un codice più pronto per la produzione, ma mi piace anche capire le basi di ciò con cui sto lavorando. Con questo in mente, ho programmato un piccolo server.js:
var http = require('http'),
url = require('url'),
path = require('path'),
fs = require('fs');
var mimeTypes = {
"html": "text/html",
"jpeg": "image/jpeg",
"jpg": "image/jpeg",
"png": "image/png",
"js": "text/javascript",
"css": "text/css"};
http.createServer(function(req, res) {
var uri = url.parse(req.url).pathname;
var filename = path.join(process.cwd(), uri);
path.exists(filename, function(exists) {
if(!exists) {
console.log("not exists: " + filename);
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('404 Not Found\n');
res.end();
}
var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
res.writeHead(200, mimeType);
var fileStream = fs.createReadStream(filename);
fileStream.pipe(res);
}); //end path.exists
}).listen(1337);
La mia domanda è duplice
È questo il modo "giusto" per creare e trasmettere in streaming html di base ecc. In node o esiste un metodo migliore / più elegante / più robusto?
Il .pipe () nel nodo fondamentalmente sta solo facendo quanto segue?
.
var fileStream = fs.createReadStream(filename);
fileStream.on('data', function (data) {
res.write(data);
});
fileStream.on('end', function() {
res.end();
});
Grazie a tutti!