Wenn Sie eine Website erstellen, generieren Sie normalerweise einige Ihrer endgültigen Inhalte dynamisch. Sie möchten diese Daten dann in Ihre endgültigen Webseiten einfügen, um sie in einem Browser anzuzeigen.

Sie können einen von zwei Ansätzen wählen: Betten Sie Ihre Seitenstruktur in Ihr Programm ein oder kombinieren Sie Ihre endgültigen Daten mit separaten Vorlagendateien.

Templating bietet Trennung von Bedenken für eine besser wartbare Codebasis. Es erleichtert auch die Aufteilung von Front-End- und Back-End-Aufgaben und die Zuweisung an verschiedene Teammitglieder. Go verfügt über eine hervorragende Vorlagenunterstützung in seiner Standardbibliothek.

Erste Schritte mit der Vorlagenerstellung in Go

Go hat zwei Templating-Pakete in der Standardbibliothek: Text/Vorlage und html/Vorlage. Das Paket text/template hat Funktionen zum Analysieren von Textdateien, während html/template HTML behandelt. Durch die Verwendung von html/template sind Sie vor Cross-Site-Scripting (XSS)-Angriffen geschützt, da Go die Dateneingabe während des Renderns umgeht. Dies ist ein weiterer Vorteil der Vorlagenerstellung gegenüber einem manuellen Ansatz.

instagram viewer

Da das Vorlagenpaket Teil der Standardbibliothek ist, müssen Sie keine Abhängigkeiten installieren; einfach importieren:

importieren "html/Vorlage"

Beginnen Sie mit Erstellen einer HTML-Datei als Vorlage für Ihre Bewerbung verwenden. Sie können die Norm verwenden .html Verlängerung oder beides .gohtml oder .tmpl, beide sind die auch üblich. Unabhängig davon, welche Erweiterung Sie verwenden, ist die Funktionalität in Ihrer Anwendung dieselbe. Einige Texteditoren können abhängig von den Erweiterungen Ihrer Vorlagen eine andere Syntaxhervorhebung anwenden. Hier ist ein grundlegendes Skelett:

<!DOCTYPE html>
<htmllang="en">
<Kopf>
<Metazeichensatz="UTF-8">
<Titel>Dokumentieren</title>
</head>
<Karosserie>

</body>
</html>

Speichern Sie diese Datei im Verzeichnis Ihres Go-Programms. Sie können nun damit beginnen, als Vorlage in Ihrem Programm damit zu arbeiten.

Erstellen Sie eine globale Instanz der Schablone Methode des Vorlagenpakets. Sie greifen von verschiedenen Teilen Ihres Programms auf diese Vorlageninstanz zu.

Var tmplt *Vorlage. Schablone

Sie müssen einen einfachen Server erstellen, um Ihre Vorlagen zu rendern und anzuzeigen. So starten Sie einen einfachen Server in Go mit der net/http Paket:

FunkrunServer() {
http. HandleFunc("/home", handlePage)
Fehler := http. ListenAndServe("lokaler Host:8080", Null)

wenn äh != Null {
Protokoll. Fatalln("Es gibt einen Fehler mit dem Server:", err)
}
}

Du rufst die an runServer Funktion aus Ihrer Hauptfunktion heraus, um den Server zu starten. Der Server hat nur eine Route, die /home route, die Ihre Seite anzeigt. Das handleSeite Parameter ist der Name einer Handler-Funktion, die Ihre Seite rendert. Das ListenAndServe -Methode startet den Server, der den Port abhört 8080 an localhost, also Ihr eigener Rechner.

Übergeben von Variablen an Vorlagen

Erstellen Sie eine globale Struktur mit dem Namen Nachrichten:

Typ Nachrichten Struktur {
Überschrift Schnur
Körper Schnur
}

Sie verwenden diese Struktur, um Daten zu speichern und an Ihre Vorlage zu übergeben, damit sie auf Ihrer letzten Seite angezeigt werden. In Ihrer Vorlage können Sie dann diese Syntax verwenden, um Daten einzufügen:

{{ Name }}

Wo Name ist der Name einer Variablen, die Sie an Ihre Vorlage übergeben haben. Wenn Sie die Vorlage rendern, werden Werte in geschweiften Klammern durch entsprechende Daten aus Ihrem Go-Code ersetzt. Da im folgenden Beispiel eine Struktur übergeben wird, verwenden Sie die Punktnotation, um auf ihre Felder zuzugreifen:

<Karosserie>
<h1>{{ .Überschrift }}</h1>
<p> {{ .Körper }} </p>
</body>

Ersetzen Sie das leere body-Element im Skeleton-Markup Ihrer Vorlage durch den obigen Code.

Das handleSeite Die Handler-Funktion überprüft, ob die Anforderung für die Seite eine GET-Anforderung ist. Anschließend wird eine Struktur mit Beispieldaten gefüllt, bevor die Vorlage gerendert und die letzte Seite bereitgestellt wird:

FunkhandleSeite(Autor http. ResponseWriter, Anfrage *http. Anfrage) {
wenn Anfrage. Methode == "GET" {
tmplt, _ = Vorlage. ParseFiles("tutorial.html")

Veranstaltung := Neuigkeiten{
Überschrift: „makeuseof.com hat alles Tech“,
Text: „Besuchen Sie MUO zum alles, was mit Technologie zu tun hat",
}

Fehler := tmplt. Ausführen (Autor, Ereignis)

wenn äh != Null {
Rückkehr
}
}
}

Das ParseFiles -Methode analysiert die von Ihnen angegebene HTML-Datei. Das Veranstaltung Variable ist die initialisierte Struktur. Das Ausführen -Methode fügt die bereitgestellten Daten gemäß den Platzhaltern in der Vorlage in die letzte Seite ein. Ausführen dauert a ResponseWriter und die Daten, in diesem Fall die Struktur.

Hier ist das Ergebnis des Ausführens des Servers und des Besuchs der Seite:

Verwenden von Kontrollstrukturen in Vorlagen

Sie können auch Kontrollstrukturen wie bedingte Anweisungen und Schleifen in Ihren Vorlagen verwenden.

Eine Schleife ermöglicht es Ihnen, mehrere Werte auszugeben und für jeden dieselbe Struktur wiederzuverwenden. Verwenden Sie die Angebot Schlüsselwort, um den Anfang des wiederholten Inhalts und die zu definieren Ende Stichwort für das Ende. Innerhalb der Schleife können Sie die verwenden {{.}} Syntax zum Einfügen des aktuellen Werts:


    {{Angebot .}}
  1. {{.}}

  2. {{Ende}}

Dann übergeben Sie den Namen der Datenstruktur, die Sie durchlaufen möchten, als Parameter an die Execute-Methode:

makeUseOfCategories := []Schnur{"Technologie erklärt", "Programmierung", "Linux",
"Android", "iOS", "Viele mehr..."}

Fehler := tmplt. Ausführen (Writer, makeUseOfCategories)

wenn äh != Null {
Rückkehr
}

Das makeUseOfCategories variable ist ein Segment von Zeichenfolgen, das als Datenparameter übergeben wird. Hier ist das Ergebnis der Schleife durch das Slice:

Sie können eine bedingte Anweisung in Ihren Vorlagen verwenden, um den Wert einer booleschen Variablen zu testen. Erstellen Sie eine Struktur mit booleschen Feldern wie folgt:

Typ TrueFalser Struktur {
Ist wahr bool
Ist falsch bool
IstStandard bool
}

Um eine Bedingung zu verwenden, schließen Sie die ein wenn Schlüsselwort in doppelten Klammern vor dem Namen der zu testenden Variablen. Beenden Sie den Bedingungsblock mit dem Ende Schlüsselwort in geschweiften Klammern:

{{wenn .ist wahr}}
<p>Bewertet wahr und wird ausgegeben</p>
{{Ende}}

{{wenn .IsDefault}}
<p>Bewertet falsch und gewonnen't-Ausgang</p>
{{Ende}}

{{wenn .ist falsch}}
<p>Bewertet falsch und gewonnen't-Ausgang</p>
{{Ende}}

Beim Initialisieren einer Struktur in Go werden die Werte standardmäßig auf „false“ gesetzt. Wenn Sie also ein Feld nicht initialisieren, wird es als „false“ ausgewertet. Beim Initialisieren der Struktur und Übergeben der Variablen als Daten an die Vorlage werden nur die Felder ausgegeben, die als wahr ausgewertet werden.

Wahl := TrueFalser {
Ist wahr: Stimmt,
Ist falsch: FALSCH,
}

Fehler := tmplt. Ausführen (Autor, Wahl)

Die endgültige Ausgabe enthält nur einen einzigen Absatz, da nur das Feld isTrue als wahr ausgewertet wird:

Sie müssen keine Vorlagen für Ihre Backend-Anwendungen verwenden

Vorlagen sind für Ihre Go-Apps nicht erforderlich. Sie können andere Ansätze verwenden, wie z. B. das Einbetten Ihrer Seitenstruktur in Ihr Programm, neben seiner Logik und anderem Verhalten.

Am Ende machen Sie sich jedoch mehr Arbeit. Go-Templating hilft, XSS-Angriffe zu verhindern und erleichtert die Trennung der Arbeit an der Seitenstruktur von der Backend-Logik.