Template Rendering

Context#Render(code int, name string, data interface{}) error renders a template with data and sends a text/html response with status code. Templates can be registered by setting Echo.Renderer, allowing us to use any template engine.

Example below shows how to use Go html/template:

  1. Implement echo.Renderer interface

    type Template struct {
        templates *template.Template
    func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
        return t.templates.ExecuteTemplate(w, name, data)
  2. Pre-compile templates


    {{define "hello"}}Hello, {{.}}!{{end}}
    t := &Template{
        templates: template.Must(template.ParseGlob("public/views/*.html")),
  3. Register templates

    e := echo.New()
    e.Renderer = t
    e.GET("/hello", Hello)
  4. Render a template inside your handler

    func Hello(c echo.Context) error {
        return c.Render(http.StatusOK, "hello", "World")