요즘 간단한 홈페이지를 만들고 있다. 어떻게 만들까 고민하다가, 새로운 기술을 배울 겸 node.js를 이용하여 구현해보았다. 최신버젼을 경험하는 것을 좋아하다 보니, 간단한 기능을 추가할 때 마다 에로사항이 꽃피고 있다. 기존에 나와 있는 node.js책에 있는 내용들의 일부분은 deflcated되어 사용될 수 없는 상황이 대부분이였다. connect의 미들웨어 router 등등. 비슷한 기능을 하는 것을 만들어서 해결할 수 있다고 하였지만 그냥 express framework를 사용하기로 하였다. 그런데 이 조차도 최신 버젼(>=3.0)에서 레이아웃이 작동되지 않는다는 것을 알게 되었다[1].
조사해 보았더니, 해결 방안은 jade의 기능을 이용하라는 것이였다.
아래는 index.jade이다.
extends layout block title =title block contents p Hello World@!@!@
아래는 레이아웃 역할을 하는 layout.jade이다.
!!! 5 html head title block title link(rel = 'stylesheet', href = '/css/bootstrap.min.css') link(rel = 'stylesheet', href = '/css/bootstrap.theme.min.css') body block contents
아래는 node.js를 통해 실행된 결과물이다.
Hello World@!@!@
요는 jade기능인 “extends”와 “block”을 쓰면 되는 것이다. index.jade에 extends layout 명령을 통해 layout.jade를 읽어 들이고 block 구분에 적혀져 있는 내용이 자동으로 치환되게 된다. 물론 extends <<파일명>> 형태로 사용하고, block <<레이블>> 형태로 맞춰주면 된다.
최근에 나온 프레임워크는 어떻게 튀어나갈지 몰라서 안정된 환경을 원할 경우에는 좋은 선택이 못되는 듯 하다.
[1] http://stackoverflow.com/questions/13783687/the-layout-jade-is-not-working-why