본문 바로가기
Node js

[Node js] ${} 표현식

by usang0810 2020. 5. 20.

오픈 튜토리얼을 보면서 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