
php小编子墨在这里为大家介绍一种新的技术,即如何渲染“模板的模板”,而不需要转义每个操作。在开发过程中,我们经常会使用模板引擎来渲染动态内容,但是当我们需要在模板中使用模板语法时,往往会遇到转义的问题。本文将为大家详细解答如何解决这个问题,以便更好地应用于项目开发中。
有谁知道如何使用 text/template 渲染“模板的模板”,其中仅渲染特定操作(即:包裹在 {{...}} 中的内容),其余部分将被处理作为文字?
例如,给定以下模板:
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.我想呈现以下输出:
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.虽然我可以使用 {{ "{{" }} 转义所需文字的每个部分,但感觉有点乏味。
我想我应该能够做类似 的事情我想渲染 {{template "outer" .foo}}. 并调用 tmpl.executetemplate(&buff, "outer", data) 之类的东西来仅渲染我指定的“外部”操作。
我还想知道渲染“模板的模板”是否是一种代码味道,如果可能的话,我应该用字符串/替换来替换我的“外部”模板,例如 我想渲染 <<.foo>>。
您可以更改第一级模板的分隔符:
tmpl := template.new("name").delims("<<",">>").parse(...)然后,将模板编写为:
I want to render <<.Foo>>.
but I don't want to render anything on this line, like {{.Bar}}...以上就是如何渲染“模板的模板”,而不转义每个操作的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号