首頁 >後端開發 >Golang >為什麼 Go 模板中不顯示 HTML 註解?

為什麼 Go 模板中不顯示 HTML 註解?

DDD
DDD原創
2024-11-02 20:52:30620瀏覽

Why are HTML comments not displayed in Go templates and how can I fix it?

HTML 註解在Go 範本中不顯示- 已解決

在Go 應用程式中,使用HTML 範本時預設不會渲染HTML註釋。這可能會導致某些場景出現問題,例如使用 KnockoutJS 的無容器控制流程語法時。為了解決這個問題,可以利用 template.HTML 在模板執行期間保留 HTML 註解。

使用 template.HTML 的一種方法是定義一個名為 safe() 的自訂模板函數。該函數接受一個字串作為參數並將其作為 template.HTML 傳回。透過 safe() 函數傳遞 HTML 註釋,可以將它們標記為安全,並且在模板渲染期間不會被轉義或省略。

以下是一個範例:

<code class="go">import (
    "html/template"
    "os"
)

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>

輸出:

<html><body>
<!-- This is a comment -->
<div>Some <b>HTML</b> content</div>
</body></html>

要使用safe() 函數,只需修改範本中的HTML 註解以包含safe( ) 函數調用,如下所示:

<code class="html">{{safe "<!-- Some HTML comment -->"}}</code>

或者,使用管道運算符:

<code class="html">{{"<!-- Some HTML comment -->" | safe}}</code>

請注意,包含引號('"')的HTML 註解需要轉義,如下所示:

<code class="html">{{safe "<!-- Some \"HTML\" comment -->"}}</code>

不建議使用條件HTML 註釋,因為它們會幹擾與html/template 套件的上下文相關轉義。

以上是為什麼 Go 模板中不顯示 HTML 註解?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn