klei-dust
Version:
A helper to use dustjs-linkedin along with Express
135 lines (97 loc) • 3.73 kB
Markdown
Klei Dust
=========
> **klei-dust** is a helper (inspired by [Consolidate](https://github.com/visionmedia/consolidate.js)) to use [dustjs-linkedin](https://npmjs.org/package/dustjs-linkedin) templates as views along with [express](https://npmjs.org/package/express) for [node.js](http://nodejs.org/).
Advantages
----------
The main advantage with **klei-dust** is that it supports relative paths for partials and base templates.
**E.g.** you can have a base template `base.dust` at `/views/base.dust` and a child template at `/views/child.dust` with the following contents:
file: /views/base.dust
```html
<!DOCTYPE html>
<html>
<head>
<title>A title here</title>
</head>
<body>
{+content/}
</body>
</html>
```
file: /views/child.dust
```html
{>base/}
{<content}
<p>Child content...</p>
{/content}
```
**And child views in subfolders:**
file: /views/subviews/child2.dust
```html
{>"../base"/}
{<content}
<p>Sub child content...</p>
{/content}
```
See `root` and `relativeToFile` options below for alternatives.
Installation
------------
$ npm install klei-dust
**N.B.** You must install *dustjs-linkedin* as well.
Setting up Klei Dust with Express
---------------------------------
To use `dust` as your default template file extension use:
```javascript
var express = require('express'),
kleiDust = require('klei-dust'),
app = express();
app.configure(function () {
...
app.set('views', __dirname + '/views');
app.engine('dust', kleiDust.dust);
app.set('view engine', 'dust');
app.set('view options', {layout: false});
...
});
...
```
If you want another extension, e.g. `html` then use this settings instead:
```javascript
...
kleiDust.setOptions({extension: 'html'}); // Add the extension option
app.set('views', __dirname + '/views');
app.engine('html', kleiDust.dust); // change engine to the same filetype
app.set('view engine', 'html'); // ditto
app.set('view options', {layout: false});
...
```
**N.B.** In the examples above klei-dust uses the express `views` setting to locate views, see options below.
Using klei-dust without express
-------------------------------
How to use klei-dust to compile templates whithout express:
```javascript
var kleiDust = require('klei-dust');
kleiDust.dust('<your-template-folder>/<your-template-name>', <template-data>, function (err, out) {
if (err) return console.log(err);
// Do something with `out`...
});
```
Available options
-----------------
* `relativeToFile` - specifies if paths to partials, base templates, etc. should be specified relative to the current view or to the views root folder, defaults to `true`
* `root` - sets the root directory for all the views/templates, if not set the express `views` setting is used (only applies if `relativeToFile` is set to `false`)
* `extension` - sets the default extension for views if omitted in includes/partials, defaults to `.dust`
* `cache` - specifies if the template cache should be enabled or not, defaults to `false`
* `keepWhiteSpace` - if `true` whitespace in templates won't be compressed, defaults to `false`
* `useHelpers` - if `true` klei-dust will try and load dustjs-helpers, defaults to `false`
The options is set with the `setOptions()` method.
Convenience methods
-------------------
* `getDust` - returns the dustjs-linkedin instance to be able to use the streaming api and such.
* `setHelpers` - sets the dust.helpers property to the given value.
* `getHelpers` - gets the current dust.helpers.
* `setFilters` - sets the dust.filters property to the given value.
* `getFilters` - gets the current dust.filters.
* `create` - create a new instance
License
---------
MIT