It is Catberry fork of Linkedin fork of Dust template engine.
npm install catberry-dust --save
A quick tutorial for how to use Dust here.
- All codebase is re-writtern in ES2015/ES6 and optimized for Catberry Framework and browserify
- All components organized via node modules
- Dust is a constructor now. You should create an instance to use it. No global variables anymore.
- It has TemplateProvider and Service Locator registration for Catberry Framework
- There are no ECMAScript 5 shims like indexOf and JSON
- There is no stream and compiler in a browser version
- Server-side stream is based on node.js Readable
- Helpers are built-in
- Removed
tap
helper, usecontext.tap
inside helpers instead - You can add helpers via
dust.helperManager.add('helperName', helper)
- You can add filters via
dust.filterManager.add('filterName', filter)
- You can register and compile templates via
dust.templateManager.compile(source)
anddust.templateManager.registerCompiled(name, compiled)
- By default
h
filter is applied to value, if you specify any filter(s) it will not applyh
filter after your filters - Improved logging, removed many redundant messages and all log messages go to Catberry's event bus if it is registered into Catberry.
- Compiled templates do not use global variable
dust
- Removed redundant pragmas such as
{%esc:s}
from Dust grammar - Method
dust.render
returns aPromise
To use Dust you should register the template engine into the Catberry locator as following.
const dust = require('catberry-dust');
const cat = catberry.create(config);
dust.register(cat.locator);
In fact, Catberry CLI does it for you.
If you want to use it as a standalone package you need to do following:
Create Dust instance at server and in browser like this:
const Dust = require('catberry-dust').Dust;
const dust = new Dust();
Compile, register and render at server:
const compiled = dust.templateManager.compile('{#some}Source{/some}');
dust.templateManager.registerCompiled('someTemplateName', compiled);
const stream = dust.getStream('someTemplateName', {some: true});
stream.pipe(process.stdout);
dust.render('someTemplateName', {some: true})
.then(content => console.log(content));
Register and render in browser (template should be compiled already):
dust.templateManager.registerCompiled('someTemplateName', compiled);
dust.render('someTemplateName', {some: true})
.then(content => console.log(content));
Also, you need browserify to use it in browser.
There are a lot of ways to contribute:
- Give it a star
- Join the Gitter room and leave a feedback or help with answering users' questions
- Submit a bug or a feature request
- Submit a PR
Denis Rechkunov denis.rechkunov@gmail.com