Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengekstrak Semua Tindakan daripada Templat HTML yang Dihuraikan?
Memandangkan templat yang dihuraikan, bagaimana kita boleh mendapatkan semula senarai semua tindakan ditakrifkan di dalamnya?
Perhatikan bahawa kaedah yang akan kami gunakan, Template.Tree, tidak bertujuan untuk kegunaan luaran. Ia dieksport semata-mata untuk kerja dalaman pakej html/template. Bergantung padanya dalam kod anda boleh membawa kepada tingkah laku yang tidak dijangka dalam keluaran pakej akan datang.
Templat yang dihuraikan diwakili secara dalaman sebagai pepohon (parse.Tree) yang terdiri daripada pelbagai nod. Setiap nod mewakili elemen tertentu dalam templat, seperti teks, medan, panggilan fungsi dan sebagainya.
Untuk mencari tindakan, kami akan melintasi pokok ini secara rekursif, mencari nod jenis parse.NodeAction . Nod ini mewakili tindakan bukan kawalan, seperti penilaian medan.
import ( "fmt" "html/template" "text/template/parse" ) func ListTemplateFields(t *template.Template) []string { return listNodeFields(t.Tree.Root, nil) } func listNodeFields(node parse.Node, results []string) []string { if node.Type() == parse.NodeAction { results = append(results, node.String()) } if listNode, ok := node.(*parse.ListNode); ok { for _, n := range listNode.Nodes { results = listNodeFields(n, results) } } return results }
t := template.Must(template.New("example").Parse(`{{ .name }} {{ .age }}`)) fields := ListTemplateFields(t) fmt.Println(fields)
[{{.name}} {{.age}}]
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekstrak Semua Tindakan daripada Templat HTML yang Dihuraikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!