將 HTML 插入 Go 模板
使用 Go 模板時,重要的是要考慮如何插入 HTML 內容以避免意外行為。例如,插入包含 HTML 程式碼的字串可能會導致不必要的字元轉義,從而導致不正確的輸出。
要在Go 模板中正確處理HTML 插入,請遵循以下準則:
透過HTML 作為template.HTML:
不要直接傳遞字元串,而是將HTML 內容包裝在template.HTML 類型中。這告訴模板引擎將內容視為原始 HTML,防止其轉義字元。
範例:
<code class="go">tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`)) tplVars := map[string]interface{} { "Html": template.HTML("<p>Paragraph</p>"), "String": "<p>Paragraph</p>", } tpl.ExecuteTemplate(os.Stdout, "T", tplVars) //OUTPUT: <p>Paragraph</p>&lt;p&gt;Paragraph&lt;/p&gt;</code>
避免傳遞字串:
將HTML 內容作為字串傳遞可能會導致不必要的轉義。例如:
<code class="go">tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}<p>{{.String}}</p>{{end}}`)) tplVars := map[string]interface{} { "Html": "<p>Paragraph</p>", "String": "<p>Paragraph</p>", } tpl.ExecuteTemplate(os.Stdout, "T", tplVars) //OUTPUT: <p>Paragraph</p>&lt;p&gt;Paragraph&lt;/p&gt;</code>
JSON 資料:
如果您將JSON 資料插入範本中,則可以使用像encoding/json 這樣的函式庫對其進行編碼作為字串。然後,您可以將編碼後的字串傳遞給模板,並使用 json 模板函數在模板中對其進行解碼。
以上是如何在Go模板中插入HTML而不轉義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!