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!