Micro-template engine.
Using John Resig's micro-template specs.
Returns compiled template.
N.B: templates are cached.
str
String
String representing the template.
Using John Resig's micro-template format.
function (locals) {}
You can pass an Object
as a parameter, it will be accessible within the template through the variable locals
.
See example for more details.
Define globals: keys are defaulted with locals.
Think of it more as global defaults. Useful for sharing helper functions.
See example for more details.
Escape function, replaces <
, >
, &
, "
, '
by their equivalent HTML entity.
Can be overridden.
var template = require('ak-template');
template.globals.title = 'JavaScript FTW!';
template.globals.upper = function (str) {
return (str + '').toUpperCase();
};
// replace
template('<h1><%- locals.title %></h1>') // -> [Function]
template('<h1><%- locals.title %></h1>')(); // -> <h1>JavaScript FTW!</h1>
template('<h1><%- locals.title %></h1>')({'title': 'JavaScript is awesome!'}); // -> <h1>JavaScript is awesome!</h1>
template('<h1><%- locals.upper(locals.title) %></h1>')({'title': 'JavaScript is awesome!'}); // -> <h1>JAVASCRIPT IS AWESOME!</h1>
// using plain JS
template('<% if (locals.foo) { %><h1>Foo</h1><% } else { %><h2>Bar</h2><% } %>')({'foo': true}); // -> <h1>Foo</h1>
template('<% if (locals.foo) { %><h1>Foo</h1><% } else { %><h2>Bar</h2><% } %>')(); // -> <h2>Bar</h2>
// escape
template('<%- locals.word %>')({'word': '<script>do_evil()</script>'}); // -> <script>do_evil()</script>
template('<%= locals.word %>')({'word': '<script>do_evil()</script>'}); // -> <script>do_evil()</script>
template.escape = function (str) {
return str.toUpperCase();
};
template('<%- locals.word %>')({'word': '<script>do_evil()</script>'}); // -> <SCRIPT>DO_EVIL()</SCRIPT>
template('<%= locals.word %>')({'word': '<script>do_evil()</script>'}); // -> <script>do_evil()</script>
with
is evil.