오픈 튜토리얼을 보면서 Nodejs를 차근차근 따라해보고 있는데 jsp에서의 EL 표현식과 비슷한 표현식을 알게 되었습니다. 사용법은 EL과 거의 똑같았지만 리터럴이 홀따옴표(')나 쌍따옴표(")가 아닌 숫자 1옆에 있는 특수문자 (`)를 리터럴로 사용해야 저 표현식이 제대로 인식되었습니다.
var template = '';
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
console.log(description);
if(err) throw err;
template = `
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>openTutorial start</title>
</head>
<body>
<h1>${description}</h1>
</body>
</html>
`;
response.end(template);
});
그리고 response.end() 함수를 readFile 바깥에다 두었을 때 template가 빈값이었을 때로 실행이 되었습니다.
비동기 프로그램이라는 것을 더 유의해야 할 것 같습니다.
전체 소스 코드
더보기
var http = require('http');
var fs = require('fs');
var url = require('url');
var app = http.createServer(function(request, response){
var _url = request.url;
var queryData = url.parse(_url, true).query;
console.log(queryData);
if(_url == '/'){
_url = '/index.html';
}
if(_url == '/favicon.ico'){
return response.writeHead(404);
}
response.writeHead(200);
var template = '';
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
console.log(description);
if(err) throw err;
template = `
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>openTutorial start</title>
</head>
<body>
<h1>${description}</h1>
</body>
</html>
`;
response.end(template);
});
});
app.listen(3000);
console.log("server run...");
테스트는 data폴더를 만들고 그 안에 확장자가 없는 파일을 몇개 만들어서 넣어주시면 됩니다.
쿼리 스트링값을 제대로 인식하는지, 그 값에 해당하는 파일을 잘 불러오는지 테스트하는 코드입니다.
'Node js' 카테고리의 다른 글
[Nodejs] ejs로 html태그값 유지하면서 사용하는 방법 (0) | 2020.05.27 |
---|