modulepackage
1.1.0
Repository: https://github.com/gin-contrib/multitemplate.git
Documentation: pkg.go.dev
# README
Multitemplate
This is a custom HTML render to support multi templates, ie. more than one *template.Template
.
Usage
Start using it
Download and install it:
go get github.com/gin-contrib/multitemplate
Import it in your code:
import "github.com/gin-contrib/multitemplate"
Simple example
package main
import (
"github.com/gin-contrib/multitemplate"
"github.com/gin-gonic/gin"
)
func createMyRender() multitemplate.Renderer {
r := multitemplate.NewRenderer()
r.AddFromFiles("index", "templates/base.html", "templates/index.html")
r.AddFromFiles("article", "templates/base.html", "templates/index.html", "templates/article.html")
return r
}
func main() {
router := gin.Default()
router.HTMLRender = createMyRender()
router.GET("/", func(c *gin.Context) {
c.HTML(200, "index", gin.H{
"title": "Html5 Template Engine",
})
})
router.GET("/article", func(c *gin.Context) {
c.HTML(200, "article", gin.H{
"title": "Html5 Article Engine",
})
})
router.Run(":8080")
}
Advanced example
Approximating html/template Inheritance
See example/advanced/example.go
package main
import (
"path/filepath"
"github.com/gin-contrib/multitemplate"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.HTMLRender = loadTemplates("./templates")
router.GET("/", func(c *gin.Context) {
c.HTML(200, "index.html", gin.H{
"title": "Welcome!",
})
})
router.GET("/article", func(c *gin.Context) {
c.HTML(200, "article.html", gin.H{
"title": "Html5 Article Engine",
})
})
router.Run(":8080")
}
func loadTemplates(templatesDir string) multitemplate.Renderer {
r := multitemplate.NewRenderer()
layouts, err := filepath.Glob(templatesDir + "/layouts/*.html")
if err != nil {
panic(err.Error())
}
includes, err := filepath.Glob(templatesDir + "/includes/*.html")
if err != nil {
panic(err.Error())
}
// Generate our templates map from our layouts/ and includes/ directories
for _, include := range includes {
layoutCopy := make([]string, len(layouts))
copy(layoutCopy, layouts)
files := append(layoutCopy, include)
r.AddFromFiles(filepath.Base(include), files...)
}
return r
}
# Packages
No description provided by the author
# Functions
No description provided by the author
New instance.
NewDynamic is the constructor for Dynamic templates.
NewRenderer allows create an agnostic multitemplate renderer depending on enabled gin mode.
No description provided by the author
No description provided by the author
No description provided by the author
# Structs
Render type.
# Interfaces
Renderer type is the Agnostic Renderer for multitemplates.
# Type aliases
DynamicRender type.
Render type.
No description provided by the author