Để đối phó với mọi yêu cầu trong một ứng dụng web, mã bình thường về mẫu là như thế này:Có cần phải đặt mẫu vào bản đồ để sử dụng lại trong Go không?
t:= template.New("welcome")
t, _ = t.ParseFiles("welcome.tpl")
t.Execute(w, data)
Tôi đoán ParseFiles
mỗi khi chi phí rất nhiều. Có thể sử dụng lại mẫu không? Vì vậy, tôi đã cải thiện nó như sau:
//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)
Tôi tự hỏi có khả thi hay có thể cải thiện hiệu quả bằng cách đặt mẫu vào bản đồ hoặc bộ nhớ cache? Tôi cũng tự hỏi chức năng Execute
có phải là chủ đề an toàn hay không?
func (t *Template) Execute(wr io.Writer, data interface{}) (err error)
Có cách nào thuận tiện để làm cho phương pháp này hoạt động với các mẫu sử dụng thừa kế không? (Ví dụ: nơi có mẫu cơ sở cho một số mẫu?) – carbocation