は、Webアプリケーション内のすべての要求に対処するには、テンプレートに関する通常のコードは次のようである:Goで再利用するためにテンプレートをマップに配置する必要はありますか?
t:= template.New("welcome")
t, _ = t.ParseFiles("welcome.tpl")
t.Execute(w, data)
は、私はすべての時間は、多くの費用ParseFiles
を推測します。テンプレートを再利用することは可能ですか?だから私はこのようにそれを改善:
//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)
私はマップまたはキャッシュにテンプレートを置くことによって、効率を向上させることが可能か、実用的であるだろうか? 私はまた、関数Execute
がスレッドセーフであるかどうか疑問に思っていますか? template.goのソースコードから
func (t *Template) Execute(wr io.Writer, data interface{}) (err error)
継承を使用するテンプレートでこのアプローチを使用する便利な方法はありますか? (たとえば、いくつかのテンプレートの基本テンプレートがある場合) – carbocation