본문 바로가기
  • 실행력이 모든걸 결정한다
Node.js/Express

[Express] View 처리

by 김코더 김주역 2021. 7. 27.
반응형

1. ejs 템플릿 엔진 소개

ejs는 Embedded Javascript의 줄임말로, HTML 코드에 Javascript 코드를 섞어 쓸 수 있는 Template이다.

HTML 코드에 자바스크립트 문법의 조건문, 반복문, 변수 등을 추가할 수 있기 때문에 동적인 페이지를 만들기 좋다.

 

 

 

2. ejs 설치

다음 명령어로 ejs를 설치한다.

npm install ejs --save

 

 

 

3. ejs 적용

const express = require('express')
const ejs = require('ejs') //★
const app = express()

app.set("view engine", "ejs") //★
...

 

 

 

4. 예제

ejs를 사용한 간단한 view 처리 예제를 준비해봤다.

 

1) app.js 생성

<app.js>

const express = require('express')
const bodyParser = require('body-parser')
const ejs = require('ejs')
const app = express()

app.set("view engine", "ejs")
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))

app.post('/hello', function(req,res){
    var p_title = req.body.title; // Test
    var p_greeting = req.body.greeting; // Hello, Guys!
    var p_n = req.body.repeat; //5
    res.render('home', {
        title : p_title,
        greeting : p_greeting,
        n : p_n
    });
})

app.listen(3000, ()=>console.log('Example app listening on port 3000!'))

Request의 render() 메서드는 원하는 데이터들을 담아 VIEW로 이동시킨다.
render() 메서드의 첫 번째 인자로는 VIEW의 경로가 들어가고, 두 번째 인자로는 데이터 셋이 들어간다.
클라이언트 측에서 3개의 데이터 title, greeting, repeat을 POST 방식으로 전송받았을 때, 이 데이터들을 HTML 코드에 포함시키기 위해서 render() 메서드의 2번째 인자에 데이터 셋으로 넣었다.
데이터 셋의 좌항은. ejs 내에서 사용할 변수명이고, 우항 변수의 값이다.

 

 

 

2) ejs 파일 생성

<home.ejs>

<html>
    <head>
        <title><%=title%></title>
    </head>
    <body>
        <h1><%=greeting%></h1>
        <% for (var i=0; i<n; i++) { %>
            <label>Hello~!</label>
        <% } %>
    </body>
</html>

위와 같이 조건문이나 반복문같은 로직은 <% %>로 묶어주고, 값을 출력하려면 <%= %>로 묶어주면 된다.

 

주의할 점

render은 "views"라는 이름의 디렉토리에서 .ejs파일을 찾기 때문에, 직접 프로젝트 최상위 디렉토리에 "views" 디렉토리를 생성해주고 그 안에 .ejs 파일을 생성해야 한다.

 

 

3) 결과

 

데이터 셋의 모든 값들이 잘 전달 되었다.

반응형

댓글