मैं नोड में एक सटीक सर्वर के बजाय नोड को समझने के लिए एक अभ्यास के रूप में एक स्थिर फ़ाइल सर्वर बनाने की कोशिश कर रहा हूं। मैं कनेक्ट और नोड-स्टेटिक जैसी परियोजनाओं से अच्छी तरह से वाकिफ हूं और पूरी तरह से अधिक उत्पादन-तैयार कोड के लिए उन पुस्तकालयों का उपयोग करने का इरादा रखता हूं, लेकिन मैं उन मूल बातों को समझना भी पसंद करता हूं जो मैं काम कर रहा हूं। इसे ध्यान में रखते हुए, मैंने एक छोटे से सर्वर को कोडित किया है। 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);
मेरा सवाल दुगना है
क्या नोड में मूल html आदि बनाने और स्ट्रीमिंग करने के बारे में यह "सही" तरीका है या बेहतर / अधिक सुरुचिपूर्ण / अधिक मजबूत विधि है?
मूल रूप से .pipe () मूल रूप से निम्नलिखित कार्य कर रहा है?
।
var fileStream = fs.createReadStream(filename);
fileStream.on('data', function (data) {
res.write(data);
});
fileStream.on('end', function() {
res.end();
});
सबको धन्यवाद!