Penguraian Template
Iris telah mengintegrasikan dukungan untuk delapan mesin template, dan para pengembang masih dapat menggunakan mesin template eksternal bahasa Go karena Context.ResponseWriter()
merupakan sebuah io.Writer
.
Semua mesin template memiliki API yang sama, termasuk penguraian menggunakan sumber daya tertanam, tata letak dan tata letak khusus Party, fungsi template, dan penguraian sebagian.
# | Nama | Pemparas |
---|---|---|
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 |
Anda dapat mendaftarkan mesin tampilan untuk setiap Party. Gunakan metode Application/Party.RegisterView(ViewEngine)
untuk mendaftarkan, seperti yang ditunjukkan di bawah ini:
Muat semua template dengan ekstensi ".html" dari folder "./views" dan parsing menggunakan paket standar html/template
.
// [app := iris.New...]
tmpl := iris.HTML("./views", ".html")
app.RegisterView(tmpl)
Di dalam penangan rute utama, gunakan metode Context.View
untuk menguraikan atau mengeksekusi tampilan.
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
Gunakan metode Context.ViewData
di middleware atau penangan utama untuk membind nilai-nilai Go dengan pola kunci-nilai dalam tampilan.
Bind {{.message}}
dengan "Hello world!"
.
ctx.ViewData("message", "Hello world!")
Pengikatan akar:
if err := ctx.View("user-page.html", User{}); err != nil {
ctx.HTML("%s", err.Error())
return
}
// pengikatan akar sebagai {{.Name}}
Gunakan metode AddFunc
dari mesin tampilan yang disukai
untuk menambahkan fungsi template.
// nama fungsi, parameter input, nilai kembalian
tmpl.AddFunc("salam", func(s string) string {
return "Salam " + s + "!"
})
Jika Anda ingin memuat ulang setiap permintaan, panggil metode Reload
dari mesin tampilan.
tmpl.Reload(true)
Jika Anda ingin menggunakan template tertanam tanpa bergantung pada sistem file lokal, gunakan alat eksternal go-bindata dan lewatkan fungsi AssetFile()
yang dihasilkannya sebagai parameter input pertama ke mesin tampilan yang disukai
.
tmpl := iris.HTML(AssetFile(), ".html")
Contoh kode:
// Berkas: main.go
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
// Parse semua template dengan akhiran ".html" dari folder "./views"
// Gunakan paket `html/template` bawaan untuk parsing
tmpl := iris.HTML("./views", ".html")
// Atur delimiter khusus
tmpl.Delims("{{", "}}")
// Aktifkan re-kompilasi untuk perubahan file template lokal
tmpl.Reload(true)
// Fungsi template default termasuk:
//
// - {{ urlpath "myNamedRoute" "pathParameter_ifNeeded" }}
// - {{ render "header.html" . }}
// Dan path relatif ke halaman saat ini:
// - {{ render_r "header.html" . }}
// - {{ yield . }}
// - {{ current }}
// Daftarkan fungsi template kustom:
tmpl.AddFunc("greet", func(s string) string {
return "Salam " + s + "!"
})
// Daftarkan mesin tampilan ke aplikasi,
// ini akan memuat template.
app.RegisterView(tmpl)
// Metode: GET
// Sumber: http://localhost:8080
app.Get("/", func(ctx iris.Context) {
// Bind {{.message}} ke "Hello world!"
ctx.ViewData("message", "Hello world!")
// Render file template: ./views/hi.html
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
})
app.Listen(":8080")
}
Halaman Hi
{{.message}}
{{greet "untukmu"}}
Buka tab baru di peramban Anda dan kunjungi http://localhost:8080.
Hasil yang dirender seharusnya seperti berikut:
Halaman Hi
Hello world!
Salam untukmu!