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!