>백엔드 개발 >Golang >Go의 HTML/템플릿 패키지에서 기본 템플릿을 어떻게 구현할 수 있나요?

Go의 HTML/템플릿 패키지에서 기본 템플릿을 어떻게 구현할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-10 09:38:02239검색

How can I implement Base Templates in Go's HTML/Template package?

Go의 HTML/템플릿에 기본 템플릿 구현

웹 애플리케이션에서 복잡한 레이아웃으로 작업할 때 다른 애플리케이션의 기반이 되는 기본 템플릿을 만드는 것이 유용한 경우가 많습니다. 페이지. Go의 html/template 패키지에서는 {{define}} 및 {{template}} 지시문을 사용하여 이를 달성할 수 있습니다.

기본 레이아웃 파일(base.html)이 있는 경우 다음 예를 고려하세요.

<!DOCTYPE html>
<html lang="en">
<body>

header...

{{template "content" .}}

footer...

</body>
</html>

그리고 이 기본 레이아웃을 자체 사용자 정의로 재사용하는 별도의 페이지(page1.html 및 page2.html) content:

{{define "content"}}
<div>
    <h1>Page1</h1>
</div>
{{end}}
{{template "base.html"}}
{{define "content"}}
<div>
    <h1>Page2</h1>
</div>
{{end}}
{{template "base.html"}}

발생하는 문제는 페이지 1과 페이지 2 모두 렌더링에 page2.html에 정의된 동일한 HTML을 사용하고 있다는 것입니다. 이 문제를 해결하려면 두 페이지 모두 {{template}} 블록 내에서 고유한 콘텐츠 섹션을 선언하고 사용하도록 해야 합니다.

그림과 같이 템플릿 콘텐츠를 별도의 파일에 정의하는 것이 더 나은 접근 방식입니다. 아래:

base.html:

{{define "base"}}
<!DOCTYPE html>
<html lang="en">
<body>

header...

{{template "content" .}}

footer...

</body>
</html>
{{end}}

페이지1 .html:

{{define "content"}}
I'm page 1
{{end}}

page2.html:

{{define "content"}}
I'm page 2
{{end}}

에서 그런 다음 template.New() 및 ParseFiles()를 사용하여 콘텐츠 및 기본 템플릿 파일을 템플릿 개체로 구문 분석할 수 있습니다. 이후 ExecuteTemplate()을 사용하여 원하는 컨텍스트로 기본 템플릿을 실행하여 최종 HTML을 구축할 수 있습니다.

tmpl, err := template.New("").ParseFiles("page1.html", "base.html")
// check your err
err = tmpl.ExecuteTemplate(w, "base", yourContext)

위 내용은 Go의 HTML/템플릿 패키지에서 기본 템플릿을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.