A templating engine with Mustache-like syntax based on Whiskers.
Using component:
$ component install daub/daub
Using npm for server-side use or for browserify:
$ npm install daub
Templates are rendered as follows, where "template" is a string and "context" is an object:
var daub = require('daub');
var template = 'Hello, {place}!',
context = { place: 'Region' };
daub.render(template, context); // Hello, Region!
A template might look something like this:
<article>
{if tags}
<ul id="tags">
{for tag in tags}
<li>{tag}</li>
{/for}
</ul>
{else}
<p>No tags!</p>
{/if}
<div>{content}</div>
{!<p>this paragraph is
commented out</p>!}
</article>
With the following context:
{
title: 'My life',
author: 'Bars Thorman',
tags: [
'real',
'vivid'
],
content: 'I grew up into a fine willow.'
}
It would be rendered as this:
<article>
<ul id="tags">
<li>real</li>
<li>vivid</li>
</ul>
<div>I grew up into a fine willow.</div>
</article>
Daub's partials are being loaded compile-time, like includes in EJS, so are not available for front-end usage.
You can specify partials using local files, using relative path to target template in statement. If specified path is a directory, it'll resolve corresponding index.html
if exists.
<body>
{>./common/header.html}
</body>
Or you can use npm or component packages, in which case template.html
file or the one specified in manifest as template
will be loaded.
<body>
{>component/tip}
</body>
NOTE: By default npm is used to resolve packages. If you want to use component, set { component: true }
in options
argument.
Run unit tests:
$ make test
Use Whiskers.js instead, it's ~3x faster (could get even faster because of internal caching).
- https://github.com/gsf/whiskers.js
- https://github.com/visionmedia/ejs
- https://github.com/janl/mustache.js
- https://github.com/akdubya/dustjs
- http://code.google.com/p/json-template/
- http://docs.djangoproject.com/en/dev/ref/templates/
The MIT License.