Cuando se trabaja con diseños complejos en aplicaciones web, suele ser útil crear una plantilla base que sirva como base para otras páginas. En el paquete html/template de Go, esto se puede lograr usando las directivas {{define}} y {{template}}.
Considere el siguiente ejemplo donde tiene un archivo de diseño base (base.html):
header... {{template "content" .}} footer...
Y páginas separadas (page1.html y page2.html) que reutilizan este diseño base con su propio contenido personalizado:
{{define "content"}}{{end}} {{template "base.html"}}Page1
{{define "content"}}{{end}} {{template "base.html"}}Page2
El problema que estás encontrando es que tanto la página 1 como la página 2 utilizan el mismo HTML para la representación, que se define en page2.html. Para solucionar esto, debemos asegurarnos de que ambas páginas declaren y utilicen sus propias secciones de contenido únicas dentro del bloque {{template}}.
Un mejor enfoque es definir el contenido de la plantilla en archivos separados, como se muestra a continuación:
base.html:
{{define "base"}} header... {{template "content" .}} footer... {{end}}
page1.html:
{{define "content"}} I'm page 1 {{end}}
page2.html:
{{define "content"}} I'm page 2 {{end}}
En su aplicación, puede analizar el contenido y los archivos de plantilla base en un objeto de plantilla usando template.New() y ParseFiles(). Posteriormente, puede crear el HTML final ejecutando la plantilla base con el contexto deseado usando ExecuteTemplate().
tmpl, err := template.New("").ParseFiles("page1.html", "base.html") // check your err err = tmpl.ExecuteTemplate(w, "base", yourContext)
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3