Rendu de modèle
Iris a un support intégré pour huit moteurs de modèle, et les développeurs peuvent toujours utiliser n'importe quel moteur de modèle externe de langage Go car Context.ResponseWriter()
est un io.Writer
.
Tous les moteurs de modèle partagent une API commune, y compris l'analyse en utilisant des ressources intégrées, la mise en page et la mise en page spécifique à la Party, les fonctions de modèle et le rendu partiel.
# | Nom | Analyseur |
---|---|---|
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 |
Vous pouvez enregistrer un moteur de vue pour chaque Party. Utilisez la méthode Application/Party.RegisterView(ViewEngine)
pour vous inscrire, comme indiqué ci-dessous :
Chargez tous les modèles avec l'extension ".html" du dossier "./views" et analysez-les en utilisant le package standard html/template
.
// [app := iris.New...]
tmpl := iris.HTML("./views", ".html")
app.RegisterView(tmpl)
Dans le gestionnaire de route principal, utilisez la méthode Context.View
pour rendre ou exécuter une vue.
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
Utilisez la méthode Context.ViewData
dans le middleware ou le gestionnaire principal pour lier des valeurs Go avec des modèles clé-valeur dans la vue.
Lie {{.message}}
avec "Bonjour le monde!"
.
ctx.ViewData("message", "Bonjour le monde!")
Liaison racine :
if err := ctx.View("user-page.html", User{}); err != nil {
ctx.HTML("%s", err.Error())
return
}
// liaison racine comme {{.Nom}}
Utilisez la méthode AddFunc
du moteur de vue préféré
pour ajouter des fonctions de modèle.
// nom de la fonction, paramètres d'entrée, valeur de retour
tmpl.AddFunc("saluer", func(s string) string {
return "Salutations " + s + "!"
})
Si vous souhaitez recharger à chaque demande, appelez la méthode Reload
du moteur de vue.
tmpl.Reload(true)
Si vous souhaitez utiliser des modèles intégrés sans dépendre du système de fichiers local, utilisez l'outil externe go-bindata et transmettez la fonction AssetFile()
qu'il génère comme premier paramètre d'entrée au moteur de vue préféré
.
tmpl := iris.HTML(AssetFile(), ".html")
Code d'exemple :
// Fichier : main.go
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
// Analyser tous les modèles avec le suffixe ".html" du dossier "./views"
// Utiliser le package `html/template` standard pour l'analyse
tmpl := iris.HTML("./views", ".html")
// Définir des délimiteurs personnalisés
tmpl.Delims("{{", "}}")
// Activer la recompilation pour les modifications locales des fichiers de modèle
tmpl.Reload(true)
// Les fonctions de modèle par défaut incluent :
//
// - {{ urlpath "myNamedRoute" "pathParameter_ifNeeded" }}
// - {{ render "header.html" . }}
// Et le chemin relatif vers la page actuelle :
// - {{ render_r "header.html" . }}
// - {{ yield . }}
// - {{ current }}
// Enregistrer une fonction de modèle personnalisée :
tmpl.AddFunc("saluer", func(s string) string {
return "Salutations " + s + "!"
})
// Enregistrer le moteur de vue auprès de l'application,
// cela chargera les modèles.
app.RegisterView(tmpl)
// Méthode : GET
// Ressource : http://localhost:8080
app.Get("/", func(ctx iris.Context) {
// Lier {{.message}} à "Bonjour tout le monde !"
ctx.ViewData("message", "Bonjour tout le monde !")
// Rendre le fichier de modèle : ./views/hi.html
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
})
app.Listen(":8080")
}