provider a powerful template by using ejs in go interpreter. But you should very careful to using it in a high traffic business.
// default
e := otto.NewDefaultOttoEngine()
got, _ := e.Exec("hello, <%= name %>!", map[string]interface{}{"name": "goejs"}, &contract.Option{
Debug: true,
})
fmt.Println(got) // hello, goejs!
// config
e := otto.NewOttoEngine(ejs.NewJsScript(ejs.WithOpenDelimiter("{"), ejs.WithOpenDelimiter("}")))
got, _ := e.Exec("hello, {%= name %}!", map[string]interface{}{"name": "goejs"}, &contract.Option{
Debug: true,
})
fmt.Println(got) // hello, goejs!
- keep json original
person := struct {
Name string
Age int
}{
Name: "go-ejs",
Age: 20,
}
e := otto.NewDefaultOttoEngine()
got, _ := e.Exec("person: <%- JSON.stringify(person) %>", map[string]interface{}{"person": person}, &contract.Option{
Debug: true,
})
fmt.Println(got) // person: {"Age":20,"Name":"go-ejs"}
- register js library
// lib.js
if (typeof sum == 'function') {
function sum(a, b) {
return a + b;
}
}
e := otto.NewOttoEngine(ejs.NewJsScript(ejs.WithOpenDelimiter("{"), ejs.WithOpenDelimiter("}")))
e.RegisterLibrary("./lib.js")
got, _ := e.Exec("{%= sum(1, 2) %}!", nil, nil)
fmt.Println(got) // 3
goja exists error, use otto first.
compare top js template engine on bestofjs, feature(call function in template) in ejs is most powerful.
- keep most of the features of ejs(js version)
- support register js library
- not support include, partials
- not use strict
- remove opts.scope
- remove opts.async
- remove opts.client
- remove opts.destructuredLocals
- admin page
- config template
- dev tool