Mükemmel bir sunucudan çok düğümü anlamak için bir egzersiz olarak nodejs'de statik bir dosya sunucusu oluşturmaya çalışıyorum. Connect ve node-static gibi projelerin farkındayım ve bu kitaplıkları daha üretime hazır kod için kullanmayı tamamen planlıyorum, ancak aynı zamanda üzerinde çalıştığım şeyin temellerini de anlamaktan hoşlanıyorum. Bunu göz önünde bulundurarak, küçük bir server.js kodladım:
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);
Benim sorum iki yönlü
Bu, düğümde temel html vb. Oluşturmanın ve yayınlamanın "doğru" yolu mu yoksa daha iyi / daha zarif / daha sağlam bir yöntem var mı?
Düğümdeki .pipe () temelde aşağıdakileri mi yapıyor?
.
var fileStream = fs.createReadStream(filename);
fileStream.on('data', function (data) {
res.write(data);
});
fileStream.on('end', function() {
res.end();
});
Herkese teşekkürler!