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中文網其他相關文章!