Maison > développement back-end > Golang > le corps du texte

Comment puis-je implémenter des modèles de base dans le package HTML/Template de Go ?

Mary-Kate Olsen
Libérer: 2024-11-10 09:38:02
original
173 Les gens l'ont consulté

How can I implement Base Templates in Go's HTML/Template package?

Implémentation de modèles de base dans le modèle HTML/Template de Go

Lorsque vous travaillez avec des mises en page complexes dans des applications Web, il est souvent utile de créer un modèle de base qui sert de base à d'autres pages. Dans le package html/template de Go, cela peut être réalisé à l'aide des directives {{define}} et {{template}}.

Considérez l'exemple suivant où vous avez un fichier de mise en page de base (base.html) :

<!DOCTYPE html>
<html lang="en">
<body>

header...

{{template "content" .}}

footer...

</body>
</html>
Copier après la connexion

Et des pages séparées (page1.html et page2.html) qui réutilisent cette mise en page de base avec leur propre contenu personnalisé :

{{define "content"}}
<div>
    <h1>Page1</h1>
</div>
{{end}}
{{template "base.html"}}
Copier après la connexion
{{define "content"}}
<div>
    <h1>Page2</h1>
</div>
{{end}}
{{template "base.html"}}
Copier après la connexion

Le problème que vous rencontrez est que les pages 1 et 2 utilisent le même HTML pour le rendu, qui est défini dans page2.html. Pour résoudre ce problème, nous devons nous assurer que les deux pages déclarent et utilisent leurs propres sections de contenu uniques dans le bloc {{template}}.

Une meilleure approche consiste à définir le contenu du modèle dans des fichiers séparés, comme indiqué. ci-dessous :

base.html:

{{define "base"}}
<!DOCTYPE html>
<html lang="en">
<body>

header...

{{template "content" .}}

footer...

</body>
</html>
{{end}}
Copier après la connexion

page1.html:

{{define "content"}}
I'm page 1
{{end}}
Copier après la connexion

page2 .html :

{{define "content"}}
I'm page 2
{{end}}
Copier après la connexion

Dans votre application, vous pouvez ensuite analyser le contenu et les fichiers de modèle de base dans un objet modèle à l'aide de template.New() et ParseFiles(). Par la suite, vous pouvez créer le HTML final en exécutant le modèle de base avec le contexte souhaité à l'aide de ExecuteTemplate().

tmpl, err := template.New("").ParseFiles("page1.html", "base.html")
// check your err
err = tmpl.ExecuteTemplate(w, "base", yourContext)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal