catberry-dust
v5.0.0
Published
Asynchronous templates for the browser and node.js (Catberry fork)
Readme
Catberry Dust
It is Catberry fork of Linkedin fork of Dust template engine.
Installation
npm install catberry-dust --saveGetting Started
A quick tutorial for how to use Dust here.
Difference from LinkedIn fork
- 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
taphelper, usecontext.tapinside 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
hfilter is applied to value, if you specify any filter(s) it will not applyhfilter 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.renderreturns aPromise
Usage
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.
Contributing
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 [email protected]
