首頁 >後端開發 >Golang >如何在 Go 的 HTML/Template 套件中實現基本模板?

如何在 Go 的 HTML/Template 套件中實現基本模板?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-10 09:38:02241瀏覽

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

在Go 的HTML/模板中實現基本模板

在Web 應用程式中處理複雜佈局時,創建一個基本模板作為其他模板的基礎通常很有用。頁。在 Go 的 html/template 套件中,這可以使用 {{define}} 和 {{template}} 指令來實現。

考慮以下範例,其中您有一個基本佈局檔案(base.html):

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

header...

{{template "content" .}}

footer...

</body>
</html>

以及使用自己的自訂內容重複使用此基本佈局的單獨頁面(page1.html和page2.html):

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

您遇到的問題是頁面1 和頁面2 都使用相同的HTML 進行渲染,該HTML 是在page2.html 中定義的。為了解決這個問題,我們需要確保兩個頁面在 {{template}} 區塊中聲明並使用自己獨特的內容部分。

更好的方法是在單獨的檔案中定義範本內容,如圖所示:

base.html:

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

header...

{{template "content" .}}

footer...

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

page1.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/Template 套件中實現基本模板?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn