==ntpl project: simple, fast and powerfull templates for node.js (http://github.com/donnerjack13589/ntpl). It's easy to learn - start now! Now comes with support of Express.js!
==It's fast: Mustache saids that running complex.html example gives following results: Mu - 40 secs (benchmarks/million_complex.js)
On my PC - running ntpl's: ntpl - 6 secs (benchmarks/million_complex.js)
Feel the difference?
==Some features:
==Installation: npm install ntpl
==Manual installation instructions: curl http://github.com/donnerjack13589/ntpl/raw/master/install.sh | sh or if it dies "Permission Denied" or EACCESS error curl http://github.com/donnerjack13589/ntpl/raw/master/install.sh | sudo sh
==Advanced installation instructions:
git clone git@github.com:donnerjack13589/ntpl.git
cd ntpl
make all
make test
==Basic examples: var ntpl = require("nTPL").plugins("nTPL.block", "nTPL.filter").ntpl;
ntpl("1 + 1 = {%= 1+1 %}")();
ntpl({
template : "1 + 1 = {%= 1+1 %}"
})();
ntpl("filename.tpl")();
// 1 + 1 = 2
ntpl({
template : "Hello {%= a %}!",
args: ["a"]
})({a: 'World'});
// >> Hello World!
ntpl({
template: "Hello {%each a%}{%= this %}, {%/each%}world!",
args: ["a"]
})({a: ['Andy','Alex']});
// >> Hello Andy, Alex, World!
ntpl({
template: "{%if godmode%}My Lord!{%else%}Who are you?{%/if%}",
args: ["godmode"]
})({godmode: true});
// >> My Lord!
var $ = require("ntpl");
$.parse("It also works!")();
// >> It also works!
==Medium examples:
ntpl("foo {* text here won't be compiled or printed *} bar")();
// >> foo bar
ntpl("{%each [1,2,3] %} "{%= this %}" {%/each%}?")();
// >> "1" "2" "3"
ntpl("{%catch var a %}What's up, dude?{%/catch%}{%= a.substr(0,9) %}?")();
// >> What's up?
ntpl({
template: "filename.tpl",
callback: function (tpl) {
console.log(tpl());
}
});
// Will load "filename.tpl" in async mode
==Harder examples:
ntpl({
template: "<button>{%= value%}</button>",
args: ["value"],
name: "input"
});
ntpl("input")({value:'Hello world!'});
// >> Button with text "Hello world!"
ntpl({
template: "filename.tpl",
callback: function (tpl) {
console.log(tpl());
},
watch: true
});
// Will load "filename.tpl" in async mode
// And watch for file changes (template will be refreshed)
// P.S. Also available in a sync mode
==Block module
var ntpl = require("ntpl").plugins("ntpl.block").ntpl;
ntpl({
template: "Hello, {%block 'username'%}{%/block%}!{%= message %}",
args: ["message"],
name: "block-test"
});
ntpl("{%extends 'block-test', {message: "How do you do?"}%}{%block 'username'%}Admin{%/block%}")();
// >> Hello, Admin!How do you do?
==Set modificators
Use "set" modificator to setup options inside template
===Examples: "set.html" {%set name first template %} {%set args a1, a2, a3 %} {%set some 123 %} {%set foo.bar 1,2,3 %} {%= a1 %} {%= a2 %} {%= a3 %}
Template generated from this file will have 'first template' name and can get 'a1', 'a2', 'a3' as arguments
var tpl = ntpl("set.html");
ntpl("first template")({a1:1,a2:2,a3:3});
tpl.options; // {name: "first template", args: ["a1", "a2", "a3"], some: "123", foo : { bar: ["1","2","3"] } }
===More info: You can't setup any other options now. Only 'name' and 'args' are allowed. But if you generated template with "watch=true" and then change {%set ... %} in template - 'name' and 'args' will be refreshed!