Go-HTML-Kommentare werden nicht gerendert: Eine Lösung mit template.HTML
In einer Go-Webanwendung verschwinden HTML-Kommentare auf gerenderten Seiten kann ein frustrierendes Problem sein. Dies ist besonders problematisch für KnockoutJS-Code, der auf einer Containerlosen Kontrollflusssyntax basiert.
Der Grund für dieses Verhalten ist, dass das HTML/Template-Paket von Go aus Sicherheitsgründen standardmäßig HTML-Inhalte maskiert. Dies bedeutet, dass HTML-Kommentare, die in eingeschlossen sind, als maskierter Text gerendert werden, anstatt als Kommentare angezeigt zu werden.
Um dieses Problem zu beheben, stellt das Paket html/template einen speziellen Typ bereit namens template.HTML. Werte dieses Typs werden beim Rendern nicht maskiert.
Ansatz mit benutzerdefinierten Funktionen
Eine effektive Lösung besteht darin, eine benutzerdefinierte Funktion für Ihre Vorlagen zu erstellen, die Ihre HTML-Kommentare in die Vorlage einschließt .HTML. So können Sie es machen:
<code class="go">func main() { t := template.Must(template.New("").Funcs(template.FuncMap{ "safe": func(s string) template.HTML { return template.HTML(s) }, }).Parse(src)) t.Execute(os.Stdout, nil) } const src = `<html><body> {{safe "<!-- This is a comment -->"}} <div>Some <b>HTML</b> content</div> </body></html>`</code>
In diesem Beispiel definieren wir eine Safe()-Funktion, die ein String-Argument entgegennimmt und es als template.HTML zurückgibt. Innerhalb der Vorlage können wir mithilfe von {{safe "
Verwendung
Um diese Technik zu verwenden, wandeln Sie Ihre HTML-Kommentare einfach in das folgende Format um:
<code class="html">{{safe "<!-- Your comment -->"}}</code>
oder
<code class="html">{{"<!-- Your comment -->" | safe}}</code>
Bei Verwendung dieses Ansatzes bleiben Ihre HTML-Kommentare in der gerenderten Ausgabe erhalten.
Hinweis:
Das obige ist der detaillierte Inhalt vonWarum verschwinden meine Go-HTML-Kommentare auf gerenderten Seiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!