더북(TheBook)

6.5.1.2 변수

HTML과 다르게 자바스크립트 변수를 템플릿에 렌더링할 수 있습니다. res.render를 호출할 때 보내는 변수를 퍼그가 처리합니다. routes/index.js의 코드를 보면 다음 부분이 있습니다.

router.get('/', (req, res, next) => {
  res.render('index', { title: 'Express' });
});

res.render(템플릿, 변수 객체)는 익스프레스가 res 객체에 추가한 템플릿 렌더링을 위한 메서드입니다. index.pug를 HTML로 렌더링하면서 { title: 'Express' }라는 객체를 변수로 집어넣습니다. layout.pug와 index.pug의 title 부분이 모두 Express로 치환됩니다. 즉, HTML에도 변수를 사용할 수 있게 된 셈입니다.

res.render 메서드에 두 번째 인수로 변수 객체를 넣는 대신, res.locals 객체를 사용해서 변수를 넣을 수도 있습니다.

router.get('/', (req, res, next) => {
  res.locals.title = 'Express';
  res.render('index');
});

위와 같이 하면 템플릿 엔진이 res.locals 객체를 읽어서 변수를 집어넣습니다. 이 방식의 장점은 현재 라우터뿐만 아니라 다른 미들웨어에서도 res.locals 객체에 접근할 수 있다는 것입니다. 따라서 다른 미들웨어에서 템플릿 엔진용 변수를 미리 넣을 수도 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.