Generator-based Handlebars templates for nested layouts.
npm install @thoughtindustries/co-nested-hbsGenerator-based Handlebars templates for nested layouts.
koa-hbs is really great, but doesn't support nested layouts. Adding nested layouts to koa-hbs would unfortunately be a complete rewrite.
co-nested-hbs supports (nested) layouts, helpers, and partials.
```
$ npm install co-nested-hbs
views/overall_layout.hbs
views/simple_theme.hbs
Simple Theme!
views/home.hbs
Welcome {{name}}!
`js
var r = require('rethinkdb');
var view = require('co-nested-hbs');
var html = await view.render('home', 'simple_theme', 'overall_layout', { title: 'Hello World!' });
`
html output would be:
Welcome Bob!
Partials are automatically registered if their filename matches _*.hbs, directory is ignored.
`js
function *() {
var view = require('co-nested-hbs')('view_path/goes/here', {
layout: 'layout_file', // specify implied layout (or layouts) to be added to each render() call.
partialsPath: 'path_to_partials',
cache: true
});
// single template rendering
var html = yield view.render('template', {local: 'variable'});
// register helper
view.registerHelper('link-to', function(url, text) {
return "" + this.text + "";
});
// render the following templates in a chain, building the 'nest'
var html = yield view.render('first_render', 'second_render', 'third_render');
// locals can be applied to all templates when they are rendered
var html = yield view.render('first_render', 'second_render', 'third_render', {title: 'Hello World!'}, {global_local: 'applied to all templates'});
}
``
MIT