Kết xuất Mẫu
Iris hỗ trợ tích hợp sẵn tám trình kết xuất mẫu và nhà phát triển vẫn có thể sử dụng bất kỳ trình kết xuất mẫu ngôn ngữ Go bên ngoài nào vì Context.ResponseWriter()
là một io.Writer
.
Tất cả các trình kết xuất mẫu đều chia sẻ một API chung, bao gồm cả cú pháp sử dụng tài nguyên nhúng, bố cục và bố cục cụ thể của Party, hàm mẫu mẫu, và kết xuất một phần.
# | Tên | Trình phân tích |
---|---|---|
1 | HTML | html/template |
2 | Blocks | kataras/blocks |
3 | Django | flosch/pongo2 |
4 | Pug | Joker/jade |
5 | Handlebars | aymerick/raymond |
6 | Amber | eknkc/amber |
7 | Jet | CloudyKit/jet |
8 | Ace | yosssi/ace |
Bạn có thể đăng ký một trình xem cho mỗi Party. Sử dụng phương thức Application/Party.RegisterView(ViewEngine)
để đăng ký, như dưới đây:
Tải tất cả các mẫu với phần mở rộng ".html" từ thư mục "./views" và phân tích bằng gói html/template
tiêu chuẩn.
// [app := iris.New...]
tmpl := iris.HTML("./views", ".html")
app.RegisterView(tmpl)
Trong xử lý tuyến đường chính, sử dụng phương thức Context.View
để kết xuất hoặc thực thi một mẫu.
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
Sử dụng phương thức Context.ViewData
trong middleware hoặc xử lý chính để ràng buộc các giá trị Go với các mẫu mẫu theo mẫu key-value.
Ràng buộc {{.message}}
với "Xin chào thế giới!"
.
ctx.ViewData("message", "Xin chào thế giới!")
Ràng buộc gốc:
if err := ctx.View("trang-nguoi-dung.html", User{}); err != nil {
ctx.HTML("%s", err.Error())
return
}
// ràng buộc gốc như {{.Name}}
Sử dụng phương thức AddFunc
của trình kết xuất mẫu ưa thích
để thêm hàm mẫu.
// tên hàm, tham số đầu vào, giá trị trả về
tmpl.AddFunc("greet", func(s string) string {
return "Chào bạn " + s + "!"
})
Nếu bạn muốn tải lại trên mỗi yêu cầu, gọi phương thức Reload
của trình kết xuất mẫu.
tmpl.Reload(true)
Nếu bạn muốn sử dụng mẫu nhúng mà không phụ thuộc vào hệ thống tệp cục bộ, sử dụng công cụ bên ngoài go-bindata và truyền hàm AssetFile()
mà nó tạo ra làm tham số đầu vào đầu tiên cho trình kết xuất mẫu ưa thích
.
tmpl := iris.HTML(AssetFile(), ".html")
Mã mẫu:
// File: main.go
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
// Phân tích tất cả các mẫu với hậu tố ".html" từ thư mục "./views"
// Sử dụng gói `html/template` tiêu chuẩn để phân tích
tmpl := iris.HTML("./views", ".html")
// Đặt các delimiters tùy chỉnh
tmpl.Delims("{{", "}}")
// Bật việc biên dịch lại cho các thay đổi tệp mẫu cục bộ
tmpl.Reload(true)
// Các hàm mẫu mặc định bao gồm:
//
// - {{ urlpath "myNamedRoute" "pathParameter_ifNeeded" }}
// - {{ render "header.html" . }}
// Và đường dẫn tương đối đến trang hiện tại:
// - {{ render_r "header.html" . }}
// - {{ yield . }}
// - {{ current }}
// Đăng ký một hàm mẫu tùy chỉnh:
tmpl.AddFunc("greet", func(s string) string {
return "Chào " + s + "!"
})
// Đăng ký trình xem cho ứng dụng,
// điều này sẽ tải các mẫu.
app.RegisterView(tmpl)
// Phương thức: GET
// Tài nguyên: http://localhost:8080
app.Get("/", func(ctx iris.Context) {
// Ràng buộc {{.message}} với "Xin chào thế giới!"
ctx.ViewData("message", "Xin chào thế giới!")
// Render tệp mẫu: ./views/hi.html
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
})
app.Listen(":8080")
}
Trang Xin Chào
{{.message}}
{{greet "đến bạn"}}
Mở một tab mới trong trình duyệt của bạn và truy cập http://localhost:8080.
Kết quả hiển thị sẽ như sau:
Trang Xin Chào
Xin chào thế giới!
Chào đến bạn!