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.