Les commentaires HTML Go ne sont pas rendus : une solution avec template.HTML
Dans une application web Go, la disparition des commentaires HTML dans les pages rendues peut être un problème frustrant. Ceci est particulièrement problématique pour le code KnockoutJS qui repose sur une syntaxe de flux de contrôle sans conteneur.
La raison derrière ce comportement est que par défaut, le package html/template de Go échappe au contenu HTML pour des raisons de sécurité. Cela signifie que les commentaires HTML, qui sont entourés de , sont rendus sous forme de texte échappé au lieu d'être affichés sous forme de commentaires.
Pour résoudre ce problème, le package html/template fournit un type spécial appelé modèle.HTML. Les valeurs de ce type ne sont pas échappées lors du rendu.
Approche de fonction personnalisée
Une solution efficace consiste à créer une fonction personnalisée pour vos modèles qui enveloppe vos commentaires HTML dans un modèle. .HTML. Voici comment procéder :
<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>
Dans cet exemple, nous définissons une fonction safe() qui prend un argument de chaîne et le renvoie sous la forme template.HTML. Dans le modèle, nous pouvons transmettre des commentaires HTML à cette fonction en utilisant {{safe "
Utilisation
Pour utiliser cette technique, transformez simplement vos commentaires HTML au format suivant :
<code class="html">{{safe "<!-- Your comment -->"}}</code>
ou
<code class="html">{{"<!-- Your comment -->" | safe}}</code>
En utilisant cette approche, vos commentaires HTML seront conservés dans la sortie rendue.
Remarque :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!