상세 컨텐츠

본문 제목

템플릿 상속

IT 공부/백엔드(Back-end)

by 듀_77 2023. 1. 14. 10:36

본문

반응형

템플릿 상속

 

// test4.html

<!-- 상속하는 곳(test4.html)
{% block content %}
{% endblock %} -->

<!-- htmlko 기본형식을 상속받는 곳(이름은 상속받는 파일이름이면 됩니다.) -->

{% extends 'base.html' %}


{% block content %}
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
{% endblock %}
// base.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
</head>
<body>
    <p>메뉴</p>
    {% block content %}
    {% endblock %}
    <p>푸터</p>
</body>
</html>

test4.html에서 상속을 받아서

base.html에 "콘텐츠 내용"이 출력된다.

 

// npm init --yes
// npm i nunjucks express
// npm i nodemon --save-dev
// -> nodemon app1 으로 실행 가능

const nunjucks = require('nunjucks');
const express = require('express');
const path = require('path');

const app = express();
app.set('view engine', 'html');

nunjucks.configure('template', {
    autoescape: true,
    express: app,
    watch: true
});
// template를 인식하고 사용하겠다
// autoescape는 보안상 true (false일 경우 html 태그 허용, DBD 공격 가능)
// express : app, 사용할 객체 지정
// watch: true 옵션을 사용하면 HTML파일이 변경될 때 템플릿 엔진 다시 렌더링

app.get('/', (req, res, next) => {
    res.render('test4.html', {
    });
});

app.listen(8080);

 

반응형

브라우저 상에서

test4.html에 있던 p 태그들이

base.html에 출력된다.

 

 

터미널에서 js 파일 실행

nodemon "js파일명" (app4.js)

 

test.html의 템플릿(code)을 상속받아서,

base.html을 기준으로 출력되었다.

신기한 건, js파일을 출력했는데 html 화면이 나온다는 점이다.

 

ㅇㄹ

 

 

반응형

관련글 더보기

댓글 영역