[go] 템플릿 상속 기능

Go 언어에서는 HTML 템플릿을 사용하여 웹 애플리케이션을 개발할 때, 템플릿 상속을 구현하는 것이 유용합니다.

상속 기능 구현

다음은 Go 언어를 사용하여 템플릿 상속 기능을 구현하는 간단한 예제입니다.

package main

import (
    "html/template"
    "net/http"
)

var templates = template.Must(template.ParseGlob("templates/*.html"))

func main() {
    http.HandleFunc("/", indexHandler)
    http.ListenAndServe(":8080", nil)
}

func indexHandler(w http.ResponseWriter, r *http.Request) {
    templates.ExecuteTemplate(w, "base", nil)
}

위의 예제에서 templates 폴더에는 base.htmlchild.html이라는 두 개의 템플릿 파일이 있다고 가정합니다. child.html 템플릿은 base.html을 상속받는 형태로 구성되어 있다고 가정합니다.

상속 템플릿 구성

base.html:


<!DOCTYPE html>
<html>
<head>
    <title>{{block "title" .}}Default Title{{end}}</title>
</head>
<body>
    {{block "content" .}}Default Content{{end}}
</body>
</html>

child.html:


{{define "title"}}Custom Title{{end}}

{{define "content"}}
    Custom Content
{{end}}

위의 base.html 템플릿은 기본적인 HTML 구조를 정의하고, {{block}} 구문을 사용하여 자식 템플릿에서 오버라이드할 수 있는 부분을 지정합니다.

child.html에서는 {{define}} 구문을 사용하여 부모 템플릿의 {{block}}에 대한 커스텀 내용을 정의합니다.

요청 처리

indexHandler 함수에서는 base.html 템플릿을 실행시킵니다. 이때 child.html 템플릿에서 정의한 내용이 적용되어 브라우저에 출력됩니다.

마무리

위의 예제는 Go 언어를 사용하여 템플릿 상속 기능을 구현하는 간단한 예제를 보여줍니다. 이를 참고하여 실제 웹 애플리케이션을 개발할 때 유용하게 활용할 수 있습니다.