projectx/internal/tpl/render.go
2025-03-21 11:05:42 +08:00

48 lines
719 B
Go

package tpl
import (
"html/template"
"net/http"
)
var rndr Renderer
func Render() Renderer {
return rndr
}
type Renderer interface {
html(w http.ResponseWriter, req *http.Request, name string, data map[string]any)
json(w http.ResponseWriter, data any)
}
type render struct {
config *TemplateConfig
templates map[string]*template.Template
}
func Init() error {
render := &render{
config: &TemplateConfig{
Root: ".",
Extension: ".tmpl",
Layout: "base",
Partial: "partial",
},
}
templates, err := render.createTemplateCache()
if err != nil {
return err
}
render.templates = templates
rndr = render
return nil
}
func InitJson() error {
rndr = &render{}
return nil
}