在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中文網其他相關文章!