"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso implementar modelos básicos no pacote HTML/Template do Go?

Como posso implementar modelos básicos no pacote HTML/Template do Go?

Publicado em 2024-11-20
Navegar:690

How can I implement Base Templates in Go's HTML/Template package?

Implementando modelos base no HTML/Template do Go

Ao trabalhar com layouts complexos em aplicações web, muitas vezes é útil criar um modelo base que sirva como base para outros páginas. No pacote html/template do Go, isso pode ser feito usando as diretivas {{define}} e {{template}}.

Considere o seguinte exemplo onde você tem um arquivo de layout base (base.html):




header...

{{template "content" .}}

footer...


E páginas separadas (page1.html e page2.html) que reutilizam esse layout base com seu próprio conteúdo personalizado:

{{define "content"}}

Page1

{{end}} {{template "base.html"}}
{{define "content"}}

Page2

{{end}} {{template "base.html"}}

O problema que você está enfrentando é que a página 1 e a página 2 estão usando o mesmo HTML para renderização, que é definido em page2.html. Para resolver isso, precisamos ter certeza de que ambas as páginas declaram e usam suas próprias seções de conteúdo exclusivas dentro do bloco {{template}}.

Uma abordagem melhor é definir o conteúdo do modelo em arquivos separados, conforme mostrado abaixo:

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}}

Em seu aplicativo, você pode analisar o conteúdo e os arquivos de modelo base em um objeto de modelo usando template.New() e ParseFiles(). Posteriormente, você pode construir o HTML final executando o modelo base com o contexto desejado usando ExecuteTemplate().

tmpl, err := template.New("").ParseFiles("page1.html", "base.html")
// check your err
err = tmpl.ExecuteTemplate(w, "base", yourContext)
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3