Maison >développement back-end >Golang >Pourquoi les commentaires HTML disparaissent-ils après la mise à jour vers une version plus récente ?
Go : résolution des problèmes de rendu des commentaires HTML
Lorsque vous travaillez avec des applications Web Go, vous pouvez rencontrer un problème où les commentaires HTML disparaissent de manière inattendue du page rendue. Cette anomalie est couramment observée après la mise à jour de Go vers une version plus récente.
Pour résoudre ce problème, il est nécessaire de comprendre le mécanisme de gestion des modèles dans Go. Le package html/template introduit un type spécial appelé template.HTML. Les valeurs de ce type ne sont pas échappées lors du rendu du modèle.
La solution réside dans le marquage de vos commentaires HTML comme template.HTML. Une méthode efficace consiste à enregistrer une fonction personnalisée dans votre modèle. Cette fonction doit accepter un argument de chaîne et le renvoyer sous la forme template.HTML. En transmettant vos commentaires HTML à cette fonction, vous vous assurez qu'ils seront conservés dans la sortie.
Voici un exemple :
<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>
En enregistrant la fonction safe(), vous pouvez transformer vos commentaires HTML en actions de modèle qui appellent cette fonction et transmettent les commentaires d'origine. Cela garantit leur conservation dans la sortie.
Vous pouvez également, si nécessaire, utiliser la syntaxe suivante :
<code class="go">{{"<!-- Some HTML comment -->" | safe}}</code>
Lorsque vous traitez des commentaires HTML contenant des guillemets, n'oubliez pas de les échapper en conséquence :
<code class="go">{{safe "<!-- Some \"HTML\" comment -->"}}</code>
Enfin, soyez prudent lorsque vous utilisez des commentaires HTML conditionnels. Leur utilisation peut perturber l'échappement contextuel implémenté dans le package html/template. Reportez-vous à la documentation pour plus de détails.
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!