Maison  >  Article  >  développement back-end  >  Pourquoi mes commentaires Go HTML disparaissent-ils dans les pages rendues ?

Pourquoi mes commentaires Go HTML disparaissent-ils dans les pages rendues ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 05:09:03868parcourir

Why Are My Go HTML Comments Disappearing in Rendered Pages?

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 ""}}. Cela garantit que les commentaires ne sont pas échappés.

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 :

  • Si vos commentaires HTML contiennent des guillemets, veillez à les échapper correctement, par exemple {{safe ""}}.
  • Évitez d'utiliser du HTML conditionnel. commentaires car ils peuvent interférer avec le mécanisme d'échappement contextuel.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn