Komen Go HTML Tidak Dipaparkan: Penyelesaian dengan templat.HTML
Dalam aplikasi web Go, hilangnya ulasan HTML dalam halaman yang diberikan boleh menjadi isu yang mengecewakan. Ini amat bermasalah untuk kod KnockoutJS yang bergantung pada sintaks aliran kawalan tanpa kontena.
Sebab di sebalik tingkah laku ini ialah secara lalai, pakej html/template Go melarikan diri daripada kandungan HTML atas sebab keselamatan. Ini bermakna ulasan HTML, yang dibalut dengan , dipaparkan sebagai teks terlepas dan bukannya dipaparkan sebagai ulasan.
Untuk menyelesaikan isu ini, pakej html/template menyediakan jenis khas dipanggil templat.HTML. Nilai jenis ini tidak terlepas apabila diberikan.
Pendekatan Fungsi Tersuai
Satu penyelesaian yang berkesan ialah mencipta fungsi tersuai untuk templat anda yang membungkus ulasan HTML anda dalam templat .HTML. Begini cara anda boleh melakukannya:
<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>
Dalam contoh ini, kami mentakrifkan fungsi safe() yang mengambil hujah rentetan dan mengembalikannya sebagai templat.HTML. Dalam templat, kami boleh menghantar ulasan HTML kepada fungsi ini menggunakan {{safe "
Penggunaan
Untuk menggunakan teknik ini, cuma tukar ulasan HTML anda kepada format berikut:
<code class="html">{{safe "<!-- Your comment -->"}}</code>
atau
<code class="html">{{"<!-- Your comment -->" | safe}}</code>
Dengan menggunakan pendekatan ini, ulasan HTML anda akan dikekalkan dalam output yang diberikan.
Nota:
Atas ialah kandungan terperinci Mengapa Komen HTML My Go Hilang dalam Halaman Dirender?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!