Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk membuat 'templat templat' tanpa melarikan diri dari setiap operasi

Bagaimana untuk membuat 'templat templat' tanpa melarikan diri dari setiap operasi

WBOY
WBOYke hadapan
2024-02-10 17:18:171044semak imbas

Bagaimana untuk membuat templat templat tanpa melarikan diri dari setiap operasi

Editor PHP Zimo berada di sini untuk memperkenalkan anda kepada teknologi baharu, iaitu cara untuk memaparkan "templat templat" tanpa melepaskan setiap operasi. Semasa proses pembangunan, kami selalunya menggunakan enjin templat untuk memaparkan kandungan dinamik, tetapi apabila kami perlu menggunakan sintaks templat dalam templat, kami sering menghadapi masalah melarikan diri. Artikel ini akan memberi anda jawapan terperinci tentang cara menyelesaikan masalah ini supaya ia boleh digunakan dengan lebih baik dalam pembangunan projek.

Kandungan soalan

Adakah sesiapa tahu cara menggunakan kandungan dalam text/template 渲染“模板的模板”,其中仅渲染特定操作(即:包裹在 {{...}}) supaya selebihnya akan diproses sebagai teks?

Sebagai contoh, diberikan templat berikut:

i want to render {{.foo}}.

but i don't want to render anything on this line, like {{.bar}} or this template: [{{ .status | toupper }}{{ if eq .status "firing" }}:{{ .alerts.firing | len }}{{ end }}] {{ .commonlabels.alertname }} for {{ .commonlabels.job }}

render {{.foo}} again.

Saya ingin memberikan output berikut:

I want to render foo.

but I don't want to render anything on this line, like {{.Bar}} or this template: [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}

Render foo again.

Walaupun saya boleh menggunakan {{ "{{" }} untuk melarikan diri dari setiap bahagian teks yang saya inginkan, ia terasa agak membosankan.

Saya rasa saya sepatutnya boleh melakukan sesuatu seperti 的事情我想渲染 {{template "outer" .foo}}. 并调用 tmpl.executetemplate(&buff, "outer", data) untuk hanya memaparkan operasi "luaran" yang saya nyatakan.

Saya juga ingin tahu sama ada pemaparan "templat templat" ialah bau kod dan jika boleh saya harus menggantikan templat "luaran" saya dengan rentetan/penggantian seperti 我想渲染 >.

Penyelesaian

Anda boleh menukar pembatas templat tahap pertama:

tmpl := template.new("name").delims("<<",">>").parse(...)

Kemudian, tulis templat sebagai:

I want to render <<.Foo>>.

but I don't want to render anything on this line, like {{.Bar}}...

Atas ialah kandungan terperinci Bagaimana untuk membuat 'templat templat' tanpa melarikan diri dari setiap operasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Mengatasi kaedah Pop().Artikel seterusnya:Mengatasi kaedah Pop().