Vorlagenrendering

Iris unterstützt von Haus aus acht Vorlagen-Engines, und Entwickler können immer noch eine externe Go-Sprachvorlagen-Engine verwenden, da Context.ResponseWriter() ein io.Writer ist.

Alle Vorlagen-Engines verwenden eine gemeinsame API, einschließlich Parsing unter Verwendung von eingebetteten Ressourcen, Layout und Party-spezifischem Layout, Vorlagenfunktionen und partieller Rendering.

# Name Parser
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

Sie können für jede Party einen View-Engine registrieren. Verwenden Sie die Methode Application/Party.RegisterView(ViewEngine) zur Registrierung, wie unten gezeigt:

Laden Sie alle Vorlagen mit der Erweiterung ".html" aus dem Ordner "./views" und parsen Sie diese mit dem Standardpaket html/template.

// [app := iris.New...]
tmpl := iris.HTML("./views", ".html")
app.RegisterView(tmpl)

Verwenden Sie in der Haupt-Routerhandler die Methode Context.View, um eine Ansicht zu rendern oder auszuführen.

if err := ctx.View("hi.html"); err != nil {
    ctx.HTML("%s", err.Error())
    return
}

Verwenden Sie die Methode Context.ViewData im Middleware oder in der Haupt-Handler, um Go-Werte mit Key-Value-Mustern in der Ansicht zu verknüpfen.

Verknüpfen Sie {{.message}} mit "Hallo Welt!".

ctx.ViewData("message", "Hallo Welt!")

Root-Bindung:

if err := ctx.View("user-page.html", User{}); err != nil {
    ctx.HTML("%s", err.Error())
    return
}

// Root-Bindung als {{.Name}}

Verwenden Sie die Methode AddFunc der bevorzugten View-Engine, um Vorlagenfunktionen hinzuzufügen.

//       Funktionsname, Eingabeparameter, Rückgabewert
tmpl.AddFunc("begrüßen", func(s string) string {
    return "Grüße " + s + "!"
})

Wenn Sie bei jeder Anfrage neu laden möchten, rufen Sie die Methode Reload der View-Engine auf.

tmpl.Reload(true)

Wenn Sie eingebettete Vorlagen verwenden möchten, ohne sich auf das lokale Dateisystem zu verlassen, verwenden Sie das externe Tool go-bindata und übergeben Sie die von ihm generierte AssetFile()-Funktion als ersten Eingabeparameter an die bevorzugte View-Engine.

tmpl := iris.HTML(AssetFile(), ".html")

Beispielcode:

// Datei: main.go
paket main

import "github.com/kataras/iris/v12"

func main() {
    app := iris.New()

    // Analysiere alle Vorlagen mit der Endung ".html" vom Ordner "./views"
    // Verwende das Standardpaket `html/template` für die Analyse
    tmpl := iris.HTML("./views", ".html")
    // Setze benutzerdefinierte Trennzeichen
    tmpl.Delims("{{", "}}")
    // Aktiviere erneutes Kompilieren bei lokalen Änderungen an den Vorlagendateien
    tmpl.Reload(true)
    
    // Standardvorlagenfunktionen umfassen:
    //
    // - {{ urlpath "meineBenannteRoute" "PfadParameter_fallsErforderlich" }}
    // - {{ render "header.html" . }}
    // Und den relativen Pfad zur aktuellen Seite:
    // - {{ render_r "header.html" . }} 
    // - {{ yield . }}
    // - {{ current }}
    // Registriere eine benutzerdefinierte Vorlagenfunktion:
    tmpl.AddFunc("gruß", func(s string) string {
        return "Grüße " + s + "!"
    })
    
    // Registriere den Ansichtsmotor in der Anwendung,
    // dadurch werden die Vorlagen geladen.
    app.RegisterView(tmpl)
    
    // Methode: GET
    // Ressource: http://localhost:8080
    app.Get("/", func(ctx iris.Context) {
        // Binde {{.message}} an "Hallo Welt!"
        ctx.ViewData("message", "Hallo Welt!")
        // Rendere die Vorlagendatei: ./views/hi.html
        if err := ctx.View("hi.html"); err != nil {
            ctx.HTML("%s", err.Error())
            return
        }
    })
    
    app.Listen(":8080")
}
Hi Seite


{{.message}}
{{gruß "an dich"}}

Öffnen Sie einen neuen Tab in Ihrem Browser und besuchen Sie http://localhost:8080.

Das gerenderte Ergebnis sollte wie folgt aussehen:

    Hi Seite


    Hallo Welt!
    Grüße an dich!