Rumah > Soal Jawab > teks badan
Saya menggunakan Gin Gonic dan fail templat HTML.
Fail templat saya mengandungi (berbilang baris) komen HTML yang serupa dengan <!--Ini ulasan saya -->. Saya ingin mengekalkan kandungan HTML dalam output yang dikembalikan.
c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{ "name": "World", })
Soalan: Bagaimana untuk mengkonfigurasi enjin templat atau c.HTML untuk tidak menanggalkan ulasan HTML dalam templat?
/static/templates/mytemplate.html
:
<!DOCTYPE html> <html lang="de"> <body> <!-- 这些行在输出中缺失。 --> Hello World </body> </html>
Pengendali saya:
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", }) }
Selepas mengedit, saya cuba menambah anotasi sebagai pemalar :
{{"<!-- my comment goes here -->"}}
tetapi tag itu terlepas sebagai
<!-- foo -->
P粉2370294572023-07-19 16:31:03
Saya rasa sebab komen HTML dialih keluar adalah kerana saya membaca templat HTML sebagai rentetan (bukannya terus sebagai fail). Punca sebenar masih tidak dapat ditentukan. Bagaimanapun, penyelesaian yang berkesan untuk saya ialah menggunakan ruang letak dalam templat.
<!DOCTYPE html> <html lang="de"> <body> {{ .myComment }} Hello World </body> </html>
dan hantar komen HTML itu sendiri sebagai parameter:
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), }) }
Gunakan import "html/template" untuk mengimport