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!