Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Basisvorlagen im HTML/Template-Paket von Go implementieren?

Wie kann ich Basisvorlagen im HTML/Template-Paket von Go implementieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-10 09:38:02207Durchsuche

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

Basisvorlagen in Gos HTML/Template implementieren

Bei der Arbeit mit komplexen Layouts in Webanwendungen ist es oft nützlich, eine Basisvorlage zu erstellen, die als Grundlage für andere dient Seiten. Im HTML/Template-Paket von Go kann dies mithilfe der Direktiven {{define}} und {{template}} erreicht werden.

Betrachten Sie das folgende Beispiel, in dem Sie eine Basislayoutdatei (base.html) haben:

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

header...

{{template "content" .}}

footer...

</body>
</html>

Und separate Seiten (Seite1.html und Seite2.html), die dieses Basislayout mit ihrem eigenen benutzerdefinierten Inhalt wiederverwenden:

{{define "content"}}
<div>
    <h1>Page1</h1>
</div>
{{end}}
{{template "base.html"}}
{{define "content"}}
<div>
    <h1>Page2</h1>
</div>
{{end}}
{{template "base.html"}}

Das Problem, auf das Sie stoßen, ist folgendes Sowohl Seite 1 als auch Seite 2 verwenden denselben HTML-Code zum Rendern, der in page2.html definiert ist. Um dies zu beheben, müssen wir sicherstellen, dass beide Seiten ihre eigenen eindeutigen Inhaltsabschnitte innerhalb des {{template}}-Blocks deklarieren und verwenden.

Ein besserer Ansatz besteht darin, den Vorlageninhalt wie gezeigt in separaten Dateien zu definieren unten:

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

In Ihrer Anwendung können Sie dann den Inhalt und die Basisvorlagendateien mithilfe von template.New() und ParseFiles() in ein Vorlagenobjekt analysieren. Anschließend können Sie den endgültigen HTML-Code erstellen, indem Sie die Basisvorlage mit Ihrem gewünschten Kontext mit ExecuteTemplate() ausführen.

tmpl, err := template.New("").ParseFiles("page1.html", "base.html")
// check your err
err = tmpl.ExecuteTemplate(w, "base", yourContext)

Das obige ist der detaillierte Inhalt vonWie kann ich Basisvorlagen im HTML/Template-Paket von Go implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn