go-blocks/gorender/README.md
2024-10-17 20:58:06 +02:00

2.5 KiB

gorender

Simple y minimalista librería para procesar plantillas utilizando la librería estándar de Go html/template.

Características

  • Procesamiento de plantillas utilizando html/template.
  • Soporte para caché de plantillas.
  • Soporte para paginación de elementos como tablas o múltiples blogs.
  • Posibilidad de añadir funciones personalizadas a las plantillas.
  • Configuración sencilla con opciones por defecto que se pueden sobreescribir. Inspirado en Gin.

Instalación

go get github.com/zepyrshut/gorender

Uso mínimo

Las plantillas deben tener la siguiente estructura, observa que las páginas a procesar están dentro de pages. Los demás componentes como bases y fragmentos pueden estar en el directorio raíz o dentro de un directorio.

Puedes cambiar el nombre del directorio template y pages. Ejemplo en la siguiente sección.

template/
├── pages/
│   └── page.html
├── base.html
└── fragment.html
import (
    "github.com/zepyrshut/gorender"
)

func main() {
    ren := gorender.New()

    // ...

    td := &gorender.TemplateData{}
    ren.Template(w, r, "index.html", td)

    // ...
}

Personalización

Recuerda que si habilitas el caché, no podrás ver los cambios que realices durante el desarrollo.

func dummyFunc() string {
	return "dummy"
}

func main() {

    customFuncs := template.FuncMap{
		"dummyFunc": dummyFunc,
	}

    renderOpts := &gorender.Render{
		EnableCache:       true,
		TemplatesPath:     "template/path",
		PageTemplatesPath: "template/path/pages",
		Functions:         customFuncs,
	}

    ren := gorender.New(gorender.WithRenderOptions(renderOpts))

    // ...

    td := &gorender.TemplateData{}
    ren.Template(w, r, "index.html", td)

    // ...
}

Agradecimientos

Descargo de responsabilidad

Esta librería fue creada para usar las plantillas en mis proyectos privados, es posible que también solucione tu problema. Sin embargo, no ofrezco ninguna garantía de que funcione para todos los casos de uso, tenga el máximo rendimiento o esté libre de errores.

Si decides integrarla en tu proyecto, te recomiendo que la pruebes para asegurarte de que cumple con tus expectativas y requisitos.

Si encuentras problemas o tienes sugerencias de mejora, puedes colocar tus aportaciones a través de issues o pull requests en el repositorio. Estaré encantado de ayudarte.