Skip to content

omnitaint/daub

 
 

Repository files navigation

Daub Build Status

A templating engine with Mustache-like syntax based on Whiskers.

Installation

Using component:

$ component install daub/daub

Using npm for server-side use or for browserify:

$ npm install daub

Example

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>

Partials

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.

Test

Run unit tests:

$ make test

Best practices

Use Whiskers.js instead, it's ~3x faster (could get even faster because of internal caching).

Forebears

License

The MIT License.

About

Templating engine.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.1%
  • PHP 0.9%