[go] html/template 패키지의 템플릿 코딩 스타일

html/template 패키지는 Go 프로그래밍 언어에서 HTML을 사용하기 위한 템플릿을 처리하기 위한 기본 기능을 제공합니다. Go 언어에서 템플릿을 작성할 때는 몇 가지 권장 사항을 따르는 것이 좋습니다. 이번 글에서는 html/template 패키지를 사용할 때 권장되는 코딩 스타일에 대해 살펴보겠습니다.

사용 예시

아래는 html/template 패키지를 사용하여 간단한 템플릿을 작성하는 예시입니다.


package main

import (
	"html/template"
	"os"
)

func main() {
	tmpl, err := template.New("example").Parse("<h1>Hello, {{.Name}}</h1>")
	if err != nil {
		panic(err)
	}
	data := map[string]string{"Name": "World"}
	err = tmpl.Execute(os.Stdout, data)
	if err != nil {
		panic(err)
	}
}

권장 사항

안전한 HTML 출력

html/template 패키지를 사용할 때는 HTML 출력을 안전하게 처리해야 합니다. 이를 위해서는 text/template 패키지 대신 html/template 패키지를 사용하고, {{.Value}} 대신 {{. | html}}와 같은 형태로 출력을 처리해야 합니다.

의도적인 코드 분리

템플릿에서 로직을 처리할 때는 의도적인 코드 분리를 고려해야 합니다. 가능한한 템플릿에서는 원시적인 로직을 최소화하고, 복잡한 로직은 미리 처리한 후에 데이터를 전달하는 방식을 권장합니다.

템플릿 재사용

템플릿을 재사용하기 위해서는 Template 오브젝트를 명시적으로 Parse하여 사용하는 것을 권장합니다. 오브젝트를 재활용하여 컴파일 속도 및 성능을 향상시킬 수 있습니다.

요약

html/template 패키지를 사용할 때는 HTML 출력의 안전성과 템플릿에서의 로직 분리, 템플릿 재사용에 유의해야 합니다. 이러한 권장 사항을 준수하면 더 안전하고 유지보수하기 쉬운 템플릿을 작성할 수 있습니다.

공식 문서 링크