All template engines share a common API i.e. Parse using embedded assets, Layouts and Party-specific layout, Template Funcs, Partial Render and more.
.
A view engine can be registered per-Party. To register a view engine use the Application/Party.RegisterView(ViewEngine)
method as shown below.
To render or execute a view use the Context.View
method inside the main route’s handler.
ctx.View("hi.html")
To bind Go values with key-value pattern inside a view through middleware or main handler use the Context.ViewData
method before the Context.View
one.
Bind: {{.message}}
with "Hello world!"
.
ctx.ViewData("message", "Hello world!")
Root binding:
// func name, input arguments, render value
tmpl.AddFunc("greet", func(s string) string {
return "Greetings " + s + "!"
})
To reload on every request call the view engine’s Reload
method.
tmpl.Reload(true)
To use embedded templates and not depend on local file system use the external tool and pass its AssetFile()
generated function to the first input argument of the preferred view engine.
Example Code:
// file: main.go
package main
import "github.com/kataras/iris/v12"
app := iris.New()
// Parse all templates from the "./views" folder
// where extension is ".html" and parse them
// using the standard `html/template` package.
tmpl := iris.HTML("./views", ".html")
// Set custom delimeters.
// Enable re-build on local template files changes.
tmpl.Reload(true)
// Default template funcs are:
//
// - {{ urlpath "myNamedRoute" "pathParameter_ifNeeded" }}
// - {{ render "header.html" }}
// and partial relative path to current page:
// - {{ render_r "header.html" }}
// - {{ yield }}
// - {{ current }}
// Register a custom template func:
tmpl.AddFunc("greet", func(s string) string {
return "Greetings " + s + "!"
})
// Register the view engine to the views,
// this will load the templates.
app.RegisterView(tmpl)
// Resource: http://localhost:8080
app.Get("/", func(ctx iris.Context) {
// Bind: {{.message}} with "Hello world!"
ctx.ViewData("message", "Hello world!")
// Render template file: ./views/hi.html
ctx.View("hi.html")
})
app.Listen(":8080")
}
<!-- file: ./views/hi.html -->
<html>
<head>
<title>Hi Page</title>
</head>
<body>
<h1>{{.message}}</h1>
<strong>{{greet "to you"}}</strong>
</html>
Open a browser tab at http://localhost:8080.