Maison > développement back-end > Golang > Comment rendre un 'modèle de modèles' sans échapper à chaque opération

Comment rendre un 'modèle de modèles' sans échapper à chaque opération

WBOY
Libérer: 2024-02-10 17:18:17
avant
1045 Les gens l'ont consulté

Comment rendre un modèle de modèles sans échapper à chaque opération

L'éditeur PHP Zimo est là pour vous présenter une nouvelle technologie, à savoir comment rendre des "modèles de modèles" sans échapper à chaque opération. Au cours du processus de développement, nous utilisons souvent des moteurs de modèles pour restituer du contenu dynamique, mais lorsque nous devons utiliser la syntaxe de modèle dans les modèles, nous rencontrons souvent des problèmes d'échappement. Cet article vous donnera une réponse détaillée sur la façon de résoudre ce problème afin qu'il puisse être mieux appliqué dans le développement de projets.

Contenu de la question

Est-ce que quelqu'un sait comment utiliser le contenu de text/template 渲染“模板的模板”,其中仅渲染特定操作(即:包裹在 {{...}}) pour que le reste soit traité sous forme de texte ?

Par exemple, étant donné le modèle suivant :

i want to render {{.foo}}.

but i don't want to render anything on this line, like {{.bar}} or this template: [{{ .status | toupper }}{{ if eq .status "firing" }}:{{ .alerts.firing | len }}{{ end }}] {{ .commonlabels.alertname }} for {{ .commonlabels.job }}

render {{.foo}} again.
Copier après la connexion

Je souhaite afficher le résultat suivant :

I want to render foo.

but I don't want to render anything on this line, like {{.Bar}} or this template: [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}

Render foo again.
Copier après la connexion

Bien que je puisse utiliser {{ "{{" }} pour échapper à chaque partie du texte que je veux, cela me semble un peu fastidieux.

Je suppose que je devrais pouvoir faire quelque chose comme 的事情我想渲染 {{template "outer" .foo}}. 并调用 tmpl.executetemplate(&buff, "outer", data) pour restituer uniquement les opérations "externes" que je spécifie.

J'aimerais aussi savoir si le rendu des "modèles de modèles" est une odeur de code et si possible je devrais remplacer mes modèles "externes" par des chaînes/remplacements comme 我想渲染 <<.foo>>.

Solution

Vous pouvez modifier le délimiteur du modèle de premier niveau :

tmpl := template.new("name").delims("<<",">>").parse(...)
Copier après la connexion

Ensuite, écrivez le modèle comme :

I want to render <<.Foo>>.

but I don't want to render anything on this line, like {{.Bar}}...
Copier après la connexion

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:stackoverflow.com
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