EJS templates embed JavaScript code inside <% ... %>
tags, much like
ERB. This library is a port of
Underscore.js's
_.template
function to
Ruby, and strives to maintain the same syntax and semantics.
Pass an EJS template to EJS.compile
to generate a JavaScript
function:
EJS.compile("Hello <%= name %>")
# => "function(obj){...}"
Invoke the function in a JavaScript environment to produce a string value. You can pass an optional object specifying local variables for template evaluation.
The EJS tag syntax is as follows:
-
<% ... %>
silently evaluates the statement inside the tags. -
<%= ... %>
evaluates the expression inside the tags and inserts its string value into the template output. -
<%- ... %>
behaves like<%= ... %>
but HTML-escapes its output.
If a evalation tag (<%=
) ends with an open function, the function
return a compiled template. For example:
<% formTag = function(template) { return '<form>\n'+template()+'\n</form>'; } %>
<%= formTag(function () { %>
<input type="submit" />
<% }) %>
generates:
<form>
<input type="submit" />
</form>
If you have the ExecJS
library and a suitable JavaScript runtime installed, you can pass a
template and an optional hash of local variables to EJS.evaluate
:
EJS.evaluate("Hello <%= name %>", :name => "world")
# => "Hello world"
© 2012 Sam Stephenson
Released under the MIT license