Ş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!