mirror of https://github.com/gofiber/fiber.git
2.7 KiB
2.7 KiB
id | title | description | sidebar_position |
---|---|---|---|
templates | 📝 Templates | Fiber supports server-side template engines. | 3 |
import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
Template interfaces
Fiber provides a Views interface to provide your own template engine:
type Views interface {
Load() error
Render(out io.Writer, name string, binding any, layout ...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:
package main
import (
"log"
"github.com/gofiber/fiber/v3"
"github.com/gofiber/template/html/v2"
)
func main() {
// Initialize standard Go html template engine
engine := html.New("./views", ".html")
// If you want other engine, just replace with following
// Create a new engine with django
// engine := django.New("./views", ".django")
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>