Servir HTML es una tarea importante para algunas aplicaciones web. Go
cuenta con uno de mis lenguajes de plantilla favorito hasta la fecha. No
por sus características, sino por su sencillez y marco de seguridad.
Renderizar plantillas HTML es casi tan fácil como representar JSON usando
el paquetenet/html/template
de la biblioteca estándar.
Este es el código fuente para la prestación de plantillas HTML:
package main
import (
"html/template"
"net/http"
"path"
)
type Libro struct {
Título string
Autor string
}
func main() {
http.HandleFunc("/", MuestraLibros)
http.ListenAndServe(":8080", nil)
}
func MuestraLibros(w http.ResponseWriter, r *http.Request) {
libro: = {Libro "Construyendo Aplicaciones Web con Go", "Jeremy Sáenz"}
fp: = path.Join("plantillas", "index.html")
plant, err: = template.ParseFiles(fp)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if err := plant.Execute(w, libro); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
La siguiente es la plantilla que usaremos. Se debe colocar en el fichero
plantillas/index.html
del directorio desde donde se ejecuta tu programa:
<html>
<h1>{{.Título}}</h1>
<h3>por {{.Autor}}</h3>
</html>
text/template
y
html/template
. Juega un poco con el lenguaje de plantillas para
darte una idea de sus metas, fortalezas y debilidades.http.Handler
(sugerencia: usa el método Copy()
de html.Template
).