Şablon Oluşturma
Iris, sekiz yerleşik şablon motorunu destekler ve geliştiriciler yine de Context.ResponseWriter()
'ı bir io.Writer
olarak kullanarak herhangi bir harici Go dilinde şablon motorunu kullanabilir.
Tüm şablon motorları, yerleşik kaynaklar kullanılarak ayrıştırma, düzen ve Partiye özgü düzen, şablon işlevleri ve kısmi oluşturma da dahil olmak üzere ortak bir API'yı paylaşırlar.
# | İsim | Ayrıştırıcı |
---|---|---|
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 |
Her Parti için bir görünüm motoru kaydedebilirsiniz. Kaydetmek için Application/Party.RegisterView(ViewEngine)
yöntemini kullanın, aşağıdaki gibi:
.html
uzantılı tüm şablonları "./views" klasöründen yükle ve standart html/template
paketini kullanarak ayrıştır.
// [app := iris.New...]
tmpl := iris.HTML("./views", ".html")
app.RegisterView(tmpl)
Ana yol işleyicisinde, bir görünümü oluşturmak veya yürütmek için Context.View
yöntemini kullanın.
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
Context.ViewData
yöntemini, ara yazılımda veya ana işleyicide Go değerlerini anahtar-değer desenleriyle bağlamak için kullanın.
{{.message}}
'yi "Merhaba dünya!"
ile bağlayın.
ctx.ViewData("message", "Merhaba dünya!")
Kök bağlama:
if err := ctx.View("user-page.html", User{}); err != nil {
ctx.HTML("%s", err.Error())
return
}
// kök bağlama olarak {{.Name}}
Tercih edilen görünüm motorunun AddFunc
yöntemini kullanarak şablon işlevleri ekleyin.
// işlev adı, girdi parametreleri, dönüş değeri
tmpl.AddFunc("greet", func(s string) string {
return "Selamlar " + s + "!"
})
Her istekte yeniden yükleme yapmak istiyorsanız, görünüm motorunun Reload
yöntemini çağırın.
tmpl.Reload(true)
Yerel dosya sistemine dayanmayan yerleşik şablonları kullanmak istiyorsanız, harici araç go-bindata'yı kullanın ve onun oluşturduğu AssetFile()
işlevini tercih edilen görünüm motorunun ilk girdi parametresine geçirin.
tmpl := iris.HTML(AssetFile(), ".html")
Örnek kod:
// Dosya: main.go
paket ana
içe aktar "github.com/kataras/iris/v12"
func main() {
uyg := iris.Yeni()
// Tüm şablonları "./views" klasöründen ".html" uzantısıyla ayrıştır
// Ayrıştırmak için standart `html/template` paketini kullan
tmpl := iris.HTML("./views", ".html")
// Özel ayraçları ayarla
tmpl.Delims("{{", "}}")
// Yerel şablon dosyası değişiklikleri için yeniden derlemeyi etkinleştir
tmpl.Reload(true)
// Varsayılan şablon işlevleri şunları içerir:
//
// - {{ urlpath "myNamedRoute" "pathParameter_ifNeeded" }}
// - {{ render "header.html" . }}
// Ve mevcut sayfanın göreli yolu:
// - {{ render_r "header.html" . }}
// - {{ yield . }}
// - {{ current }}
// Özel bir şablon işlevi kaydet:
tmpl.AddFunc("selamla", func(s string) string {
return "Merhaba " + s + "!"
})
// Görünüm motorunu uygulamaya kaydet,
// bu şablonları yükleyecektir.
uyg.RegisterView(tmpl)
// Metot: GET
// Kaynak: http://localhost:8080
uyg.Get("/", func(ctx iris.Context) {
// {{.message}}'yi "Merhaba dünya!" ile bağla
ctx.ViewData("message", "Merhaba dünya!")
// Şablon dosyasını renderla: ./views/hi.html
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
})
uyg.Listen(":8080")
}
Merhaba Sayfası
{{.message}}
{{selamla "sana"}}
Tarayıcınızda yeni bir sekme açın ve http://localhost:8080 adresini ziyaret edin.
Oluşturulan sonuç şu şekilde olmalıdır:
Merhaba Sayfası
Merhaba dünya!
Sana selam!