Renderowanie szablonów
Iris posiada wbudowane wsparcie dla ośmiu silników szablonów, a programiści mogą nadal korzystać z zewnętrznego silnika szablonów języka Go, ponieważ Context.ResponseWriter() jest obiektem typu io.Writer.
Wszystkie silniki szablonów mają wspólne API, obejmujące analizę za pomocą zasobów osadzonych, układ i układ związany z Partią, funkcje szablonów oraz częściowe renderowanie.
| # | Nazwa | 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 |
Można zarejestrować silnik widoku dla każdej Partii. Aby zarejestrować, należy użyć metody Application/Party.RegisterView(ViewEngine), jak pokazano poniżej:
Załaduj wszystkie szablony z rozszerzeniem ".html" z foldera "./views" i analizuj za pomocą standardowego pakietu html/template.
// [app := iris.New...]
tmpl := iris.HTML("./views", ".html")
app.RegisterView(tmpl)
W głównym obsługiwaczu trasy użyj metody Context.View do renderowania lub wykonania widoku.
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
Użyj metody Context.ViewData w oprogramowaniu pośredniczącym lub głównym obsługiwaczu do powiązania wartości Go z wzorcem klucz-wartość w widoku.
Powiąż {{.message}} z "Hello world!".
ctx.ViewData("message", "Hello world!")
Powiązanie główne:
if err := ctx.View("user-page.html", User{}); err != nil {
ctx.HTML("%s", err.Error())
return
}
// powiązanie główne jako {{.Name}}
Użyj metody AddFunc preferowanego silnika widoku do dodawania funkcji szablonów.
// nazwa funkcji, parametry wejściowe, wartość zwracana
tmpl.AddFunc("greet", func(s string) string {
return "Witaj " + s + "!"
})
Jeśli chcesz, aby odświeżał się przy każdym żądaniu, wywołaj metodę Reload silnika widoku.
tmpl.Reload(true)
Jeśli chcesz używać szablonów osadzonych bez polegania na lokalnym systemie plików, użyj zewnętrznego narzędzia go-bindata i przekaż wygenerowaną przez niego funkcję AssetFile() jako pierwszy parametr wejściowy do preferowanego silnika widoku.
tmpl := iris.HTML(AssetFile(), ".html")
Przykładowy kod:
// Plik: main.go
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
// Parsowanie wszystkich szablonów z rozszerzeniem ".html" z folderu "./views"
// Użyj standardowego pakietu `html/template` do parsowania
tmpl := iris.HTML("./views", ".html")
// Ustawianie niestandardowych separatorów
tmpl.Delims("{{", "}}")
// Włącz rekompilację przy lokalnych zmianach plików szablonowych
tmpl.Reload(true)
// Domyślne funkcje szablonów obejmują:
//
// - {{ urlpath "mojaNazwaTrasy" "parametrSciezki_jezeliPotrzebny" }}
// - {{ render "header.html" . }}
// Oraz ścieżkę względną do bieżącej strony:
// - {{ render_r "header.html" . }}
// - {{ yield . }}
// - {{ current }}
// Rejestrowanie niestandardowej funkcji szablonu:
tmpl.AddFunc("powitanie", func(s string) string {
return "Witaj " + s + "!"
})
// Rejestrowanie silnika widoku w aplikacji,
// to spowoduje załadowanie szablonów.
app.RegisterView(tmpl)
// Metoda: GET
// Zasób: http://localhost:8080
app.Get("/", func(ctx iris.Context) {
// Powiąż {{.message}} z "Witaj, świecie!"
ctx.ViewData("message", "Witaj, świecie!")
// Renderuj plik szablonu: ./views/hi.html
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
})
app.Listen(":8080")
}
Strona powitalna
{{.message}}
{{powitanie "dla Ciebie"}}
Otwórz nową kartę w przeglądarce i odwiedź http://localhost:8080.
Efekt renderowania powinien być następujący:
Strona powitalna
Witaj, świecie!
Witaj dla Ciebie!