본문 바로가기
node.js

[node.js][4] 간단한 ejs 동적 페이지 만들어보기

by 야호호코코 2019. 8. 11.
반응형

지난 글에서는...

 

 ejs의 활용법에 대해 알아보았다. 어떻게 html 파일 내에 자바스크립트를 내장시키는 지 알아보았고 <% %> <%=  %>등의 태그, 규칙에 대해서도 알아보았다. 이번 글에서는 동적 페이지를 생성하는 법에 대해 알아보겠다.

 

[4][0] 동적페이지란?

 

 동적페이지라 함은, 정적으로 저장되어있는 정보만이 아닌, 사용자와 서버의 상호작용 통해 그때그때 가공된 페이지를 말한다. 예를 들면, yahohococo.tistory.com은 항상 고정되어 있는 코딩노예블로그의 홈 화면을 보여주지만, 그 뒤에 숫자를 붙이거나 다른 키워드를 붙여 페이지 내의 원하는 글이나 관리자 모드의 페이지를 넘겨받을 수 있다. http://yahohococo.tistory.com/43처럼 말이다. 사용자가 원하는 내용을 직접 뒤에 붙여, 원하는 페이지를 불러내는 것이다. 그렇다면 node.js와 express, ejs를 활용해 동적페이지를 어떻게 만들 수 있을까?

 

[4][1] 한 번 만들어봅시다

 

 동적페이지의 핵심은 도메인 뒤에 붙는 숫자나 키워드로 페이지를 그 때 그 때 다르게 부르는 것이다. 때로는 같은 형태의 페이지에서 다른 내용을 불러올 수도 있고, 아예 다른 형태의 페이지를 불러올 수도 있다. 우리는 이전에 만들었던 /hello 디렉토리 뒤에 반복 횟수를 붙여 동적으로 hello를 해보는 페이지를 만들어볼 것이다. '/hello/:num'이라는 형식으로 주소창에 입력한 파라미터 값을 페이지로 넘겨줘 동적으로 페이지 생성하는 데 도움을 줄 수 있다. 

 

app.js

const express = require("express");
const ejs = require("ejs");
const bodyParser = require('body-parser');          // body-parser 요청
const app = express();

app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({extended: false}));  // urlencoded    
app.use(bodyParser.json());                         // json 타입으로 파싱하게 설정
app.use(express.static(__dirname + '/'));

app.get("/", function(req, res){
    
    res.render("test1", {});
    
});

app.get("/hello/:num", function(req, res){	// 동적 페이지 부분
    
    res.render("test2", {num : req.params.num });	// 페이지로 파라미터 값 넘겨줌
    
});

app.post("/postTest", function(req, res){   // postTest라는 주소로 POST요청이 들어오면 실행
   
    console.log(req.body);      // body에 있는 정보를 콘솔창에 출력.
    res.json({ok:true, name:req.body.name});        // 클라이언트에 성공했다고 신호를 보냄.
    
});

app.listen(3000, function(){
    console.log("실행중..."); 
});

test2.ejs

<html>
    <head>
        <title>22222TESTESTEST22222</title>
    </head>
    <body>
        <% for (var i = 0; i < num; i++) { %>
            <h1>HELLO~!</h1>
        <% } %>
    </body>
</html>

 

 파라미터 값들의 집합은 req.params에 존재한다. 거기에 파라미터 변수명으로 그대로 저장되어 있으니 그대로 가져다 쓰면 된다. 번거로워도 페이지 렌더 함수에 넘겨줘야 ejs 안에서 사용이 가능하다.

 

이제 /hello/1은 한 번 인사 
/hello/5는 다섯 번 인사다.

 

 아주 간단해 보이지만 매우 활용할 곳이 많은 기능이다. 왜 굳이 저렇게 파라미터 값을 app.js 안에서 설정해 주느냐? 주소창 안에서 '?num=5' 이렇게 설정해도 되지않느냐? 할 수도 있다. 하지만 그냥 주소창에다 바로 값을 적는게 깔끔한 URL을 보여줄 수 있다. 사용자에게나 개발자에게나 더 좋은 쪽으로 흘러가는 구조이기 때문이다.

 

 

 

 이번 글에서는 간단히 URL을 이용한 동적 페이지 생성에 대해 알아보았다. 다음 글에서는 이번 글의 심화 버전으로 동적페이지를 다루는 법에 대해 알아보겠다.

'node.js' 카테고리의 다른 글

[node.js][3] ejs 사용설명서  (8) 2019.02.21
[node.js][2] GET과 POST 써보기  (3) 2019.01.17
[node.js][1] express로 페이지 올려보기  (0) 2019.01.11