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!