Tmpl
The riot template engine
Installation
Npm
npm install riot-tmpl --save
Bower
$ bower install riot-tmpl --save
Documentation
How it works?
Three ways:
-
Expressions: tmpl('{ value }', data)
.
Returns the result of evaluated expression as a raw object.
-
Templates: tmpl('Hi { name } { surname }', data)
.
Returns a string with evaluated expressions.
-
Filters: tmpl('{ show: !done, highlight: active }', data)
.
Returns a space separated list of trueish keys (mainly used for setting html classes), e.g. "show highlight".
Template examples
tmpl('{ title || "Untitled" }', data)
tmpl('Results are { results ? "ready" : "loading" }', data)
tmpl('Today is { new Date() }', data)
tmpl('{ message.length > 140 && "Message is too long" }', data)
tmpl('This item got { Math.round(rating) } stars', data)
tmpl('<h1>{ title }</h1>{ body }', data)
Falsy expressions in templates
In templates (as opposed to single expressions) all falsy values except zero (undefined/null/false) will default to empty string:
tmpl('{ undefined } - { false } - { null } - { 0 }', {})
Precompiled expressions
tmpl has separated the evaluation process of the compilation, now you need to call tmpl.compile()
for pre-compilate the expression before using tmpl()
, like in this example:
var tmpl = riot.util.tmpl
var expr = '{ msg }'
var pcexpr = tmpl.compile(expr)
console.log(tmpl(pcexpr, {msg: "Hi"}))
The riot compiler can be used for pre-compilate all expressions in your application.
If you don't need runtime construction of expressions, you can use the minimum version of riot: riot-light.js, that exclude the expression compiler.
NOTE:
Precompiling all expressions avoids errors with restrictions on environments blocking the Function
constructor (i.e. eval
)
Changes in 2.3
- Brackets can not contain characters in the set
[\x00-\x1F<>a-zA-Z0-9'",;\\]
- No comments in expressions, the compiler is the only that strip comments
- Attributes with expressions containing
>
must be quoted
Please read the CHANGES file in the doc folder.