[英]Go: How to Manage Nested Templates?
試圖以理智的方式使用模板,但我認為我認為這是錯誤的。
現“基本模板”為
{{define "base"}}<!DOCTYPE html>
<html lang="en">
<head>
{{template "head" .}}
{{template "meta" . }}
</head>
<body>
<!-- some html -->
{{template "body" .}}
</body>
頁面模板為
{{define "head"}}<title>{{.Title}}</title>{{end}}
{{define "body"}}<h2>{{.Title}}</h2>
<p>{{.Content}}</p>
{{end}}
我可以這樣輸出模板
package main
import (
"database/sql"
"github.com/gin-gonic/gin"
"html/template"
)
func singleHandler(db *sql.DB, r *gin.Engine) gin.HandlerFunc {
return gin.HandlerFunc(func(c *gin.Context) {
html := template.Must(template.ParseFiles("templates/_base.tmpl", "templates/single.tmpl", "templates/meta.tmpl"))
r.SetHTMLTemplate(html)
// get data from database
data := struct {
E *model.E
M []model.M
}{
e,
m,
}
c.Render(200, c.Engine.HTMLRender, "base", data)
})
}
但這意味着,如果將來我為其他內容塊添加一些模板,則必須遍歷所有其他文件,並將新模板添加到template.ParseFiles(…)。 另外,我必須添加所有新代碼,以將該模板的數據填充到每個應該做其他事情的模塊中。
構造模塊和嵌套模板的預期方式是什么?
我的解決方案:
在基本模板的開頭添加注釋行,例如"templates/_base.tmpl", "templates/single.tmpl", "templates/meta.tmpl"
。
讀取模板文件字符串,並將其動態傳遞給template.ParseFiles()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.