완벽한 서버보다는 노드를 이해하기위한 연습으로 nodejs에서 정적 파일 서버를 만들려고합니다. 저는 Connect 및 node-static과 같은 프로젝트에 대해 잘 알고 있으며 더 많은 프로덕션 준비 코드에 해당 라이브러리를 완전히 사용할 계획이지만 작업중인 작업의 기본 사항도 이해하고 싶습니다. 이를 염두에두고 작은 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);
내 질문은 두 가지입니다
이것이 노드에서 기본 html 등을 만들고 스트리밍하는 "올바른"방법입니까? 아니면 더 나은 / 더 우아하고 / 더 강력한 방법이 있습니까?
노드의 .pipe ()는 기본적으로 다음을 수행합니까?
.
var fileStream = fs.createReadStream(filename);
fileStream.on('data', function (data) {
res.write(data);
});
fileStream.on('end', function() {
res.end();
});
모두 감사합니다!