Go语言 如何_not_ strip HTML注解从一个HTML模板中

1sbrub3j  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(76)

我使用Gin Gonic与HTML模板文件。
我的模板文件包含<!-- my comment goes here-->类型的(多行)HTML注解。我希望HTML的内容是保留在输出是返回

c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
    "name": "World",
})

字符串
其中c*gin.Context

问题:如何配置模板引擎或c.HTML以 * 不 * 从模板中剥离HTML注解?

详细内容

/static/templates/mytemplate.html

<!DOCTYPE html>
<html lang="de">
<body>
<!--
these lines are missing in the output
-->
Hello World
</body>
</html>


我的处理人:

func NewRouter() *gin.Engine {
    router := gin.Default()
    // ... load templates from file system ...
    router.GET("/foo", fooHandler)
    return router
}
func fooHandler(c *gin.Context) {
    c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
        "name": "World",
    })
}

编辑我尝试将注解添加为常量:

{{"<!-- my comment goes here -->"}}


但随后标记被转义为

&lt;!-- foo --&gt;

6kkfgxo0

6kkfgxo01#

我猜HTML注解被剥离的原因是因为我将HTML模板读取为字符串(而不是直接读取为文件)。仍然不能完全确定。无论如何,为我做这项工作的变通方法是在模板中使用保持器:

<!DOCTYPE html>
<html lang="de">
<body>
{{ .myComment }}
Hello World
</body>
</html>

字符串
并将HTML注解本身作为参数传递:

const myHtmlComment string = `
<!--
these lines are (not) missing (anymore) in the output
-->
`
func fooHandler(c *gin.Context) {
    c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
        "name": "World",
        "myComment": template.HTML(myHtmlComment),
    })
}


关于import "html/template"

相关问题