首頁 > 後端開發 > Golang > 主體

為什麼我的 Go HTML 註解在渲染頁面中消失?

Patricia Arquette
發布: 2024-11-02 05:09:03
原創
765 人瀏覽過

Why Are My Go HTML Comments Disappearing in Rendered Pages?

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 註解傳遞給此函數。這可確保註釋不會被轉義。

用法

要使用此技術,只需將HTML 註解轉換為以下格式:

<code class="html">{{safe "<!-- Your comment -->"}}</code>
登入後複製

<code class="html">{{"<!-- Your comment -->" | safe}}</code>
登入後複製

透過使用此方法,您的HTML 註解將保留在渲染的輸出中。

  • 注意:
如果您的HTML 註解包含引號,請務必正確轉義它們,例如,{{safe ""}}。 避免使用條件 HTML註釋,因為它們會幹擾上下文相關的轉義機制。

以上是為什麼我的 Go HTML 註解在渲染頁面中消失?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!