node package manager

ak-template

micro template engine

ak-template

Micro-template engine.

Using John Resig's micro-template specs.

API

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.

Example

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>'}); // -> &lt;script&gtdo_evil()&lt;/script&gt 
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> 

Why locals and not using with?

with is evil.