6.5.1.6 extends와 block

    레이아웃을 정할 수 있으며, 공통되는 레이아웃 부분을 따로 관리할 수 있어 좋습니다. include와도 함께 사용하곤 합니다.

    퍼그

    HTML

    layout.pug

    doctype html
    html
      head
        title= title
        link(rel='stylesheet', href='/style.css')
        block style
      body
        header 헤더입니다.
        block content
        footer 푸터입니다.
        block script

    body.pug

    extends layout
    
    block content
      main
        p 내용입니다.
    
    block script
        script(src="/main.js")

    HTML

    <!DOCTYPE html>
    <html>
      <head>
        <title>Express</title>
        <link rel="stylesheet" href="/style.css" />
      </head>
      <body>
        <header>헤더입니다.</header>
        <main>
          <p>내용입니다.</p>
        </main>
        <footer>푸터입니다.</footer>
        <script src="/main.js"></script>
      </body>
    </html>

    레이아웃이 될 파일에는 공통된 마크업을 넣되, 페이지마다 달라지는 부분을 block으로 비워둡니다. block은 여러 개 만들어도 됩니다. block [블록명]과 같은 형태로 block을 선언합니다.

    block이 되는 파일에서는 extends 키워드로 레이아웃 파일을 지정하고 block 부분을 넣습니다. block 선언보다 한 단계 더 들여쓰기되어 있어야 합니다. 나중에 익스프레스에서 res.render('body')를 사용해 하나의 HTML로 합쳐 렌더링할 수 있습니다. 퍼그 확장자는 생략 가능하며 block 부분이 서로 합쳐집니다.

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