html

package
v1.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2023 License: MIT Imports: 9 Imported by: 0

README

HTML

HTML is the official Go template engine html/template, to see the original syntax documentation please click here

Info:

All templates within the specified view directory are analyzed and compiled at the beginning to increase the performance when using them. Thus it should be noted that no definition with the same name should exist, otherwise they will overwrite each other. For templating the {{embed}} tag should be used

Basic Example

./views/index.html

{{template "partials/header" .}}

<h1>{{.Title}}</h1>

{{template "partials/footer" .}}

./views/partials/header.html

<h2>Header</h2>

./views/partials/footer.html

<h2>Footer</h2>

./views/layouts/main.html

<!DOCTYPE html>
<html>

<head>
  <title>Main</title>
</head>

<body>
  {{embed}}
</body>

</html>
package main

import (
	"log"
	
	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/template/html"
)

func main() {
	// Create a new engine
	engine := html.New("./views", ".html")

	// Or from an embedded system
	// See github.com/gofiber/embed for examples
	// engine := html.NewFileSystem(http.Dir("./views", ".html"))

	// Pass the engine to the Views
	app := fiber.New(fiber.Config{
		Views: engine,
	})

	app.Get("/", func(c *fiber.Ctx) error {
		// Render index
		return c.Render("index", fiber.Map{
			"Title": "Hello, World!",
		})
	})

	app.Get("/layout", func(c *fiber.Ctx) error {
		// Render index within layouts/main
		return c.Render("index", fiber.Map{
			"Title": "Hello, World!",
		}, "layouts/main")
	})

	log.Fatal(app.Listen(":3000"))
}

Example with embed.FS
package main

import (
    "log"
    "net/http"
    "embed"

    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/template/html"
)

//go:embed views/*
var viewsfs embed.FS

func main() {
    engine := html.NewFileSystem(http.FS(viewsfs), ".html")

    // Pass the engine to the Views
    app := fiber.New(fiber.Config{
        Views: engine,
    })


    app.Get("/", func(c *fiber.Ctx) error {
        // Render index - start with views directory
        return c.Render("views/index", fiber.Map{
            "Title": "Hello, World!",
        })
    })

    log.Fatal(app.Listen(":3000"))
}

and change the starting point to the views directory

./views/index.html

{{template "views/partials/header" .}}

<h1>{{.Title}}</h1>

{{template "views/partials/footer" .}}
Example with innerHTML
package main

import (
    "embed"
    "html/template"
    "log"
    "net/http"

    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/template/html"
)

//go:embed views/*
var viewsfs embed.FS

func main() {
    engine := html.NewFileSystem(http.FS(viewsfs), ".html")
    engine.AddFunc(
        // add unescape function
        "unescape", func(s string) template.HTML {
            return template.HTML(s)
        },
    )

    // Pass the engine to the Views
    app := fiber.New(fiber.Config{Views: engine})

    app.Get("/", func(c *fiber.Ctx) error {
        // Render index
        return c.Render("views/index", fiber.Map{
            "Title": "Hello, <b>World</b>!",
        })
    })

    log.Fatal(app.Listen(":3000"))
}

and change the starting point to the views directory

./views/index.html

<p>{{ unescape .Title}}</p>

html output

<p>Hello, <b>World</b>!</p>

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Engine

type Engine struct {

	// templates
	Templates *template.Template
	// contains filtered or unexported fields
}

Engine struct

func New

func New(directory, extension string) *Engine

New returns a HTML render engine for Fiber

func NewFileSystem added in v1.5.0

func NewFileSystem(fs http.FileSystem, extension string) *Engine

NewFileSystem ...

func (*Engine) AddFunc added in v1.4.0

func (e *Engine) AddFunc(name string, fn interface{}) *Engine

AddFunc adds the function to the template's function map. It is legal to overwrite elements of the default actions

func (*Engine) AddFuncMap added in v1.6.29

func (e *Engine) AddFuncMap(m map[string]interface{}) *Engine

AddFuncMap adds the functions from a map to the template's function map. It is legal to overwrite elements of the default actions

func (*Engine) Debug added in v1.4.0

func (e *Engine) Debug(enabled bool) *Engine

Debug will print the parsed templates when Load is triggered.

func (*Engine) Delims added in v1.4.0

func (e *Engine) Delims(left, right string) *Engine

Delims sets the action delimiters to the specified strings, to be used in templates. An empty delimiter stands for the corresponding default: {{ or }}.

func (*Engine) FuncMap added in v1.8.0

func (e *Engine) FuncMap() map[string]interface{}

FuncMap returns the template's function map.

func (*Engine) Layout added in v1.4.0

func (e *Engine) Layout(key string) *Engine

Layout defines the variable name that will incapsulate the template

func (*Engine) Load added in v1.4.0

func (e *Engine) Load() error

Load parses the templates to the engine.

func (*Engine) Parse added in v1.3.2

func (e *Engine) Parse() error

Parse is deprecated, please use Load() instead

func (*Engine) Reload added in v1.4.0

func (e *Engine) Reload(enabled bool) *Engine

Reload if set to true the templates are reloading on each render, use it when you're in development and you don't want to restart the application when you edit a template file.

func (*Engine) Render

func (e *Engine) Render(out io.Writer, template string, binding interface{}, layout ...string) error

Render will execute the template name along with the given values.

Directories

Path Synopsis
module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL