This is a command-line utility to compile javascript templates (currently Jade and Underscore) for use client-side.
TplCpl compiles a whole directory of your project's templates into single JS-file and optionally minifies them with Uglify.js.
Install TplCpl from npm:
sudo -g npm install tplcpl
tplcpl --help
Global (-g) installation is preferred to use the command line tool.
Usage:
tplcpl -t path/to/templates -o path/to/templates.js -c
You have to pass -t and -o options - templates directory and output JS-file respectively.
-c option means "compress" - minify output file with Uglify.js.
During compilation a directory is traversed recursively.
Template engine to compile with is chosen by file's extension.
Jade templates must have .jade extension, underscore templates - .us extension.
Download and run tplcpl-setup.exe Windows installer
TplCpl is installed to C:\tplcpl.
C:\tplcpl\bin\tplcpl -t path\to\templates -o path\to\templates.js -c
Under windows please avoid spaces in paths.
After templates are compiled, they may be used as following:
var html = Templating.tpl('my/template.jade', {foo:'bar'});
console.log(html);
A Templating namespace provides also a convenient way to add tpl() helper to your javascript "class".
Suppose we have an OOP module like this:
var MyModule = function () {
};
MyModule.prototype.myMethod = function () {
};
//etc...
Then we make:
Templating.enable(MyModule);
Now instances of MyModule will have a tpl() method:
var inst = new MyModule;
var h = inst.tpl('my/template.jade', {foo:'bar'});
Since tpl() is added with Templating.enable, templates rendering functions are bound to the calling object.
So in your jade or underscore templates you can use this variable referring to the object that calls tpl().
There is a missing feature in Underscore templates - an escaping.
So it is added here.
Now
<%=variable%>
is used to escape special characters in a variable.
To show variable without escaping you should use:
<%-variable%>
I have written TplCpl for private use, so it is not a universal tool.
Feel free to fork it or submit an issue if you want to add any missing features.