Categorygithub.com/reddec/gin-template-manager
modulepackage
0.0.0-20220420140410-eb09f4e87b02
Repository: https://github.com/reddec/gin-template-manager.git
Documentation: pkg.go.dev

# README

Gin template manager

Manages Golang templates and integrates with Gin framework.

Features:

  • Layouts, including nested ('base', 'sub-base', 'sub-sub-base', ...)
  • Caching
  • Streaming
  • Supports embedded assets
  • Supports named routes with parameters (ex: .Ref "eventByID" 1234 could be mapped to ../events/1234 with proper escaping)

Check example directory.

The project is focusing on developer experience (DX) rather on the performance.

Goals are:

  • make developing SSR applications on Go convenient and simple
  • extend and integrate (not replace) with Gin framework
  • keep it flexible

Inspirations: Hugo, Django, Rails

STATUS: proof-of-concept

Usage

Initialize manager

  • Opt: filesystem: templates := mananger.New(os.DirFS("path-to-dir"))
  • Opt: assets (embedded): templates := mananger.New(assets)

Link to Gin router

  • router.HTMLRender = templates

Render

  • gctx.HTML(http.StatusOK, "index.html", "params")

Example

templates := mananger.New(os.DirFS("path-to-dir"))

router := gin.Default()
router.HTMLRender = templates

router.GET("/", func(gctx *gin.Context) {
    gctx.HTML(http.StatusOK, "index.html", "params")
})
// ...

Convention

Directory structure

  • @layout.html - layout file

# Packages

No description provided by the author

# Functions

Cache compiled template.
Func adds templates functions to internal map.
FuncMap sets user-defined functions for templates.
New template manager which supports layouts and can be used as template engine for Gin.
NewLinks creates and installs alias handler.
Rel constructs relative path for provided absolute path.
Stream response directly to client.
View creates view context which could be used in template.

# Constants

No description provided by the author

# Structs

No description provided by the author
Manager of templates.
ViewContext is convenient wrapper around context and data which could be used in templates.

# Type aliases

No description provided by the author