Popularity
6.9
Growing
Activity
0.0
Declining
543
19
68

Programming language: Go
License: MIT License
Tags: Template Engines    
Latest version: v1.1.1

fasttemplate alternatives and similar packages

Based on the "Template Engines" category.
Alternatively, view fasttemplate alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of fasttemplate or a related project?

Add another 'Template Engines' Package

README

fasttemplate

Simple and fast template engine for Go.

Fasttemplate performs only a single task - it substitutes template placeholders with user-defined values. At high speed :)

Take a look at quicktemplate if you need fast yet powerful html template engine.

Please note that fasttemplate doesn't do any escaping on template values unlike html/template do. So values must be properly escaped before passing them to fasttemplate.

Fasttemplate is faster than text/template, strings.Replace, strings.Replacer and fmt.Fprintf on placeholders' substitution.

Below are benchmark results comparing fasttemplate performance to text/template, strings.Replace, strings.Replacer and fmt.Fprintf:

$ go test -bench=. -benchmem
PASS
BenchmarkFmtFprintf-4                        2000000           790 ns/op           0 B/op          0 allocs/op
BenchmarkStringsReplace-4                     500000          3474 ns/op        2112 B/op         14 allocs/op
BenchmarkStringsReplacer-4                    500000          2657 ns/op        2256 B/op         23 allocs/op
BenchmarkTextTemplate-4                       500000          3333 ns/op         336 B/op         19 allocs/op
BenchmarkFastTemplateExecuteFunc-4           5000000           349 ns/op           0 B/op          0 allocs/op
BenchmarkFastTemplateExecute-4               3000000           383 ns/op           0 B/op          0 allocs/op
BenchmarkFastTemplateExecuteFuncString-4     3000000           549 ns/op         144 B/op          1 allocs/op
BenchmarkFastTemplateExecuteString-4         3000000           572 ns/op         144 B/op          1 allocs/op
BenchmarkFastTemplateExecuteTagFunc-4        2000000           743 ns/op         144 B/op          3 allocs/op

Docs

See http://godoc.org/github.com/valyala/fasttemplate .

Usage

    template := "http://{{host}}/?q={{query}}&foo={{bar}}{{bar}}"
    t := fasttemplate.New(template, "{{", "}}")
    s := t.ExecuteString(map[string]interface{}{
        "host":  "google.com",
        "query": url.QueryEscape("hello=world"),
        "bar":   "foobar",
    })
    fmt.Printf("%s", s)

    // Output:
    // http://google.com/?q=hello%3Dworld&foo=foobarfoobar

Advanced usage

    template := "Hello, [user]! You won [prize]!!! [foobar]"
    t, err := fasttemplate.NewTemplate(template, "[", "]")
    if err != nil {
        log.Fatalf("unexpected error when parsing template: %s", err)
    }
    s := t.ExecuteFuncString(func(w io.Writer, tag string) (int, error) {
        switch tag {
        case "user":
            return w.Write([]byte("John"))
        case "prize":
            return w.Write([]byte("$100500"))
        default:
            return w.Write([]byte(fmt.Sprintf("[unknown tag %q]", tag)))
        }
    })
    fmt.Printf("%s", s)

    // Output:
    // Hello, John! You won $100500!!! [unknown tag "foobar"]