Maison > développement back-end > Golang > Pourquoi les commentaires HTML ne s'affichent-ils pas dans les modèles Go et comment puis-je y remédier ?

Pourquoi les commentaires HTML ne s'affichent-ils pas dans les modèles Go et comment puis-je y remédier ?

DDD
Libérer: 2024-11-02 20:52:30
original
619 Les gens l'ont consulté

Why are HTML comments not displayed in Go templates and how can I fix it?

Les commentaires HTML ne s'affichent pas dans les modèles Go - Résolu

Dans les applications Go, les commentaires HTML ne sont pas affichés par défaut lors de l'utilisation de modèles HTML. Cela peut entraîner des problèmes dans certains scénarios, par exemple lors de l'utilisation de la syntaxe de flux de contrôle sans conteneur de KnockoutJS. Pour résoudre ce problème, template.HTML peut être utilisé pour conserver les commentaires HTML pendant l'exécution du modèle.

Une méthode pour utiliser template.HTML consiste à définir une fonction de modèle personnalisée appelée safe(). Cette fonction prend une chaîne comme argument et la renvoie sous la forme template.HTML. En transmettant les commentaires HTML via la fonction safe(), ils peuvent être marqués comme sûrs et ne seront pas échappés ou omis lors du rendu du modèle.

Voici un exemple :

<code class="go">import (
    "html/template"
    "os"
)

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>
Copier après la connexion

Sortie :

<html><body>
<!-- This is a comment -->
<div>Some <b>HTML</b> content</div>
</body></html>
Copier après la connexion

Pour utiliser la fonction safe(), modifiez simplement les commentaires HTML dans le modèle pour inclure l'appel de la fonction safe(), comme ceci :

<code class="html">{{safe "<!-- Some HTML comment -->"}}</code>
Copier après la connexion

Vous pouvez également utiliser le tube opérateur :

<code class="html">{{"<!-- Some HTML comment -->" | safe}}</code>
Copier après la connexion

Notez que les commentaires HTML contenant des guillemets (""') doivent être échappés, comme ci-dessous :

<code class="html">{{safe "<!-- Some \"HTML\" comment -->"}}</code>
Copier après la connexion

Les commentaires HTML conditionnels ne sont pas recommandés car ils peuvent interférer avec l'échappement contextuel du package html/template.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal