2013-08-26 30 views
7

Khi tôi chạy:Golang mẫu mới không làm việc

t, _ := template.ParseFiles("index.html") 
t.Execute(w, nil) 

trang tải tốt. Nhưng khi tôi thử và chạy

t := template.New("first") 
t, _ = t.ParseFiles("index.html") 
t.Execute(w, nil) 

điều duy nhất tải là trang trống. Tôi đang cố gắng thay đổi các giá trị phân cách trong mẫu html Golang và muốn tạo mẫu, thay đổi giá trị phân cách, sau đó phân tích cú pháp tệp.

Có ai khác có vấn đề này không?

Trả lời

13

Phiên bản đầu tiên hoạt động như bạn mong đợi vì hàm ParseFiles cấp gói sẽ trả lại mẫu mới có tên và nội dung của tệp được phân tích cú pháp đầu tiên.

Trong trường hợp thứ hai, bạn đang tạo mẫu có tên "first" rồi phân tích mẫu có tên "index.html". Khi bạn gọi t.Execute trên "first", nó vẫn trống.

Bạn có thể khắc phục vấn đề bằng cách:

  1. Sử dụng template.New("index.html"), do đó tên tập tin phù hợp với tên mẫu bạn phân tích tiếp theo;
  2. Cung cấp tên mẫu bạn muốn thực thi một cách rõ ràng với t.ExecuteTemplate(w, "index.html", nil)