Skip to content

lmmfy/goejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a592599 Â· Feb 21, 2022

History

21 Commits
Aug 26, 2021
Aug 26, 2021
Feb 21, 2022
Jun 18, 2021
Jun 17, 2021
Feb 21, 2022
Jun 18, 2021
Aug 26, 2021
Jun 18, 2021

Repository files navigation

goejs

Go Report Card codecov GoDoc


provider a powerful template by using ejs in go interpreter. But you should very careful to using it in a high traffic business.

Usage

basic

// 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!

advanced

  1. 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"}
  1. 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.

why use ejs

compare top js template engine on bestofjs, feature(call function in template) in ejs is most powerful.

feature

  • keep most of the features of ejs(js version)
  • support register js library

diff with ejs

  • not support include, partials
  • not use strict
  • remove opts.scope
  • remove opts.async
  • remove opts.client
  • remove opts.destructuredLocals

best Scene

  • admin page
  • config template
  • dev tool

more ejs syntax

https://ejs.co/#docs

Thanks