開発モード/デバッグモードでは、すべての要求にテンプレートをリロードするのは問題ありません。
あなたはtemplate.Executeを包むように
type TemplateExecutor interface{
ExecuteTemplate(wr io.Writer, name string, data interface{}) error
}
type DebugTemplateExecutor struct {
Glob string
}
func (e DebugTemplateExecutor) ExecuteTemplate(wr io.Writer, name string, data interface{}) error {
t := template.Must(template.ParseGlob(e.Glob))
return t.ExecuteTemplate(wr, name, data)
}
type ReleaseTemplateExecutor struct {
Template *template.Template
}
func (e ReleaseTemplateExecutor) ExecuteTemplate(wr io.Writer, name string, data interface{}) error {
return e.Template.ExecuteTemplate(wr, name, data)
}
のようなインターフェースと二つの "テンプレートの執行" を定義することができます()。実行時にどれを希望するかを選択します。
const templateGlob = "templates/*.html"
const debug = true
var executor TemplateExecutor
func main() {
if debug {
executor = DebugTemplateExecutor{templateGlob}
} else {
executor = ReleaseTemplateExecutor{
template.Must(template.ParseGlob(templateGlob)),
}
}
http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
executor.ExecuteTemplate(w, "test.html", nil)
})
http.ListenAndServe(":3000", nil)
}
プロダクションでホットリロードが必要な場合は、すべてのリクエストでコンパイルするのではなく、変更をディレクトリで確認することをおすすめします。
は私の問題を解決しました。テンプレート編集の間にアプリケーションを再起動する必要はありません。ありがとうございました! – benjaminben