Maison  >  Article  >  développement back-end  >  Comment puis-je implémenter des modèles de base dans le package HTML/Template de Go ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 09:38:02175parcourir

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>

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"}}
{{define "content"}}
<div>
    <h1>Page2</h1>
</div>
{{end}}
{{template "base.html"}}

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}}

page1.html:

{{define "content"}}
I'm page 1
{{end}}

page2 .html :

{{define "content"}}
I'm page 2
{{end}}

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)

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!

Déclaration:
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