Rumah > Artikel > pembangunan bahagian belakang > Mengapa komen HTML tidak dipaparkan dalam templat Go dan bagaimana saya boleh membetulkannya?
Komen HTML Tidak Dipaparkan dalam Templat Go - Selesai
Dalam aplikasi Go, ulasan HTML tidak dipaparkan secara lalai apabila menggunakan templat HTML. Ini boleh menyebabkan isu untuk senario tertentu, seperti apabila menggunakan sintaks aliran kawalan tanpa kontena KnockoutJS. Untuk menangani masalah ini, templat.HTML boleh digunakan untuk mengekalkan ulasan HTML semasa pelaksanaan templat.
Satu kaedah untuk menggunakan templat.HTML ialah dengan mentakrifkan fungsi templat tersuai yang dipanggil safe(). Fungsi ini mengambil rentetan sebagai hujah dan mengembalikannya sebagai templat.HTML. Dengan menghantar ulasan HTML melalui fungsi safe(), mereka boleh ditandakan sebagai selamat dan tidak akan terlepas atau ditinggalkan semasa pemaparan templat.
Berikut ialah contoh:
<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>
Output:
<html><body> <!-- This is a comment --> <div>Some <b>HTML</b> content</div> </body></html>
Untuk menggunakan fungsi safe(), cuma ubah suai ulasan HTML dalam templat untuk memasukkan panggilan fungsi safe(), seperti:
<code class="html">{{safe "<!-- Some HTML comment -->"}}</code>
Sebagai alternatif, gunakan paip operator:
<code class="html">{{"<!-- Some HTML comment -->" | safe}}</code>
Perhatikan bahawa ulasan HTML yang mengandungi tanda petikan ('"') perlu dilepaskan, seperti di bawah:
<code class="html">{{safe "<!-- Some \"HTML\" comment -->"}}</code>
Komen HTML bersyarat tidak disyorkan kerana ia boleh mengganggu dengan pelarian sensitif konteks bagi pakej html/templat.
Atas ialah kandungan terperinci Mengapa komen HTML tidak dipaparkan dalam templat Go dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!