Web/Nodejs

Node.js (Express, 템플릿 엔진)

알로그 2020. 1. 11. 23:56
반응형

Node.js Express와 템플릿 엔진에 대해 알아보자.

* 본 강의는 생활코딩 Node.js를 이용해 웹애플리케이션 만들기의 내용을 정리한 내용임

 

템플릿이 제공하는 기본적인 틀을 이용하여 더 빠르고 수월하게 개발할 수 있다.

쉽게 얘기하면 아래 그림에서 왼쪽과 같이 작성하면 오른쪽과 같이 자동으로 렌더링해준다.

 

 

여러가지 템플릿 엔진이 있지만 express에서 권장하는 pug(과거 jade)를 사용해보자. 

사용법

$ npm install pug --save

 

Express에서 템플릿을 렌더링하려면 아래와 같은 애플리케이션 설정이 필요하다.

  • views, 템플리트가 있는 디렉토리. 예: app.set('views', './views')
  • view engine, 사용할 템플리트 엔진. 예: app.set('view engine', 'pug')

* 기본적으로 폴더 네임은 views로 사용하길 권장함

 

<메인 소스코드>

app.locals.pretty = true는 브라우저에서 오른쪽 마우스 클릭, 페이지 소스 보기에서 소스코드를 예쁘게 보여주기 위한 라인이다. (이걸 사용안하면 띄워쓰기나 개행이 입력되지 않은 상태로 보임)

Controller에 해당하는 부분인 app.get 부분은 URL localhost/template으로 접속했을 때, temp라는 파일(확장자 : pug)로 rendering 시켜주는 부분이다.

 

res.render 라인에 의해서 temp.pug 파일에 작성한 템플릿이 렌더링되어 html로 보여주게 된다.

이때 time:Date() 값은 temp.pug 파일을 렌더링 할 때, 변수값을 넘겨주기 위함이다.

var express = require('express');
var app = express();

app.locals.pretty = true;

app.set('view engine', 'pug');
app.set('views', './views');

app.get('/template', function(req, res){
  res.render('temp', {time:Date()})
});

 

<temp.pug 소스코드>

html 문법을 알고 있다면, 아래 내용은 크게 어렵지 않다.

크게 다른 점은 for문을 이용한 반복문을 사용할 수 있는데, 이때는 for문 앞에 -를 추가해줘야 한다.

그리고 div=time에 해당하는 라인은 html의 div tag에 time 변수를 넣겠다는 의미이며, time은 위의 메인 소스코드에서 매개변수로 받았기 때문에 이를 전달받아서 값이 할당된다.

html
    head
    body
        h1 Hello Pug
        ul
            -for(var i=0; i<5; i++)
                li coding
        div= time

 

즉 위의 temp.pug 파일이 아래와 같이 변한다.

 

그리고 위와 같이 변경된 소스에 의해서 실제로 브라우저에 아래와 같이 보이게 된다.

 

pug 문법에 대해 자세히 알고 싶다면 아래 링크를 참조하자.

https://pugjs.org/

 

https://pugjs.org/

 

pugjs.org

 

반응형

'Web > Nodejs' 카테고리의 다른 글

Node.js (Supervisor)  (0) 2020.04.04
Node.js (쿼리)  (0) 2020.01.17
Node.js (Express)  (0) 2020.01.08
Node.js  (0) 2020.01.06