웹 애플리케이션에서 복잡한 레이아웃으로 작업할 때 다른 애플리케이션의 기반이 되는 기본 템플릿을 만드는 것이 유용한 경우가 많습니다. 페이지. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!