Aby poradzić sobie z każdą prośbę w aplikacji internetowej, normalny kod o szablonów jest tak:Czy konieczne jest umieszczenie szablonów w mapie do ponownego użycia w Go?
t:= template.New("welcome")
t, _ = t.ParseFiles("welcome.tpl")
t.Execute(w, data)
Chyba ParseFiles
za każdym razem kosztuje dużo. Czy można ponownie użyć szablonu? Więc poprawiła to tak:
//templateMap := make(map[string][template])
//...
tplName :="welcome"
t := templateMap[tplName]
if t=nil{
t:= template.New(tplName)
t, _ = t.ParseFiles("welcome.tpl")
templateMap[tplName] = t
}
t.Execute(w, data)
Zastanawiam to możliwe lub wykonalne w celu poprawy efektywności poprzez umieszczenie szablonów na mapie lub cache? Zastanawiam się również, czy funkcja Execute
jest bezpieczna dla wątków, czy nie?
func (t *Template) Execute(wr io.Writer, data interface{}) (err error)
Czy istnieje wygodny sposób, aby to podejście działało z szablonami, które używają dziedziczenia? (Np., Gdzie jest szablon podstawowy dla niektórych szablonów?) – carbocation