πŸ“
Templates
Fiber supports server-side template engines.

Template interfaces

Fiber provides a Views interface to provide your own template engine:
Views
type Views interface {
Load() error
Render(io.Writer, string, interface{}, ...string) error
}
Views interface contains a Load and Render method, Load is executed by Fiber on app initialization to load/parse the templates.
// Pass engine to Fiber's Views Engine
app := fiber.New(fiber.Config{
Views: engine,
// Views Layout is the global layout for all template render until override on Render function.
ViewsLayout: "layouts/main"
})
The Render method is linked to the ctx.Render() function that accepts a template name and binding data. It will use global layout if layout is not being defined in Render function. If the Fiber config option PassLocalsToViews is enabled, then all locals set using ctx.Locals(key, value) will be passed to the template.
app.Get("/", func(c *fiber.Ctx) error {
return c.Render("index", fiber.Map{
"hello": "world",
});
})

Engines

Fiber team maintains templates package that provides wrappers for multiple template engines:
example
views/index.html
package main
​
import (
"log"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html"
)
​
func main() {
// Initialize standard Go html template engine
engine := html.New("./views", ".html")
​
app := fiber.New(fiber.Config{
Views: engine,
})
app.Get("/", func(c *fiber.Ctx) error {
// Render index template
return c.Render("index", fiber.Map{
"Title": "Hello, World!",
})
})
​
log.Fatal(app.Listen(":3000"))
}
<!DOCTYPE html>
<body>
<h1>{{.Title}}</h1>
</body>
</html>