📝 模板
模板接口
Fiber 提供了一个 Views 接口来提供你自己的模板引擎
- Views
type Views interface {
Load() error
Render(io.Writer, string, interface{}, ...string) error
}
Views
接口包含一个 Load
和 Render
方法,Load
在应用程序初始化时由 Fiber 执行,以加载/解析模板。
// 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"
})
Render
方法链接到 ctx.Render() 函数,该函数接受一个模板名称和绑定数据。如果在 Render
函数中未定义布局,它将使用全局布局。如果启用了 Fiber 配置选项 PassLocalsToViews
,那么使用 ctx.Locals(key, value)
设置的所有局部变量都将传递给模板。
app.Get("/", func(c *fiber.Ctx) error {
return c.Render("index", fiber.Map{
"hello": "world",
});
})
引擎
Fiber 团队维护 模板 包,该包为多个模板引擎提供包装器
- 示例
- views/index.html
package main
import (
"log"
"github.com/gofiber/fiber/v2"
"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>