Warum verschwinden meine Go-HTML-Kommentare auf gerenderten Seiten?

Patricia Arquette
Freigeben: 2024-11-02 05:09:03
Original
765 Leute haben es durchsucht

Why Are My Go HTML Comments Disappearing in Rendered Pages?

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>
Nach dem Login kopieren

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 ""}} HTML-Kommentare an diese Funktion übergeben. Dadurch wird sichergestellt, dass die Kommentare nicht maskiert werden.

Verwendung

Um diese Technik zu verwenden, wandeln Sie Ihre HTML-Kommentare einfach in das folgende Format um:

<code class="html">{{safe "<!-- Your comment -->"}}</code>
Nach dem Login kopieren

oder

<code class="html">{{"<!-- Your comment -->" | safe}}</code>
Nach dem Login kopieren

Bei Verwendung dieses Ansatzes bleiben Ihre HTML-Kommentare in der gerenderten Ausgabe erhalten.

Hinweis:

  • Wenn Ihre HTML-Kommentare Anführungszeichen enthalten, achten Sie darauf, diese richtig zu maskieren, z. B. {{safe ""}}.
  • Vermeiden Sie die Verwendung von bedingtem HTML Kommentare, da sie den kontextsensitiven Escape-Mechanismus beeinträchtigen können.

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!