Go HTML 注释不渲染:使用 template.HTML 的解决方案
在 Go Web 应用程序中,渲染页面中 HTML 注释的消失可能是一个令人沮丧的问题。对于依赖于无容器控制流语法的 KnockoutJS 代码来说,这尤其成问题。
此行为背后的原因是,默认情况下,Go 的 html/template 包出于安全原因会转义 HTML 内容。这意味着包含在 中的 HTML 注释将呈现为转义文本,而不是显示为注释。
为了解决此问题,html/template 包提供了一种特殊类型称为模板.HTML。这种类型的值在渲染时不会转义。
自定义函数方法
一个有效的解决方案是为模板创建一个自定义函数,将 HTML 注释包装在模板中.HTML。具体操作方法如下:
<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>
在此示例中,我们定义了一个 safe() 函数,该函数接受字符串参数并将其作为 template.HTML 返回。在模板中,我们可以使用 {{safe "
用法
要使用此技术,只需将 HTML 注释转换为以下格式:
<code class="html">{{safe "<!-- Your comment -->"}}</code>
或
<code class="html">{{"<!-- Your comment -->" | safe}}</code>
通过使用此方法,您的 HTML 注释将保留在呈现的内容中
注意:
以上是为什么我的 Go HTML 注释在渲染页面中消失?的详细内容。更多信息请关注PHP中文网其他相关文章!