A Handlebars template renderer for Koa applications.
npm install --save koa-hbs-renderer
<p>This is a template. Isn't that {{adjective}}?</p>
const Koa = require('koa');
const path = require('path');
const renderer = require('koa-hbs-renderer');
let app = new Koa();
app.use(renderer({
paths: {
views: path.join(__dirname, 'views')
}
}));
app.use(async (ctx, next) => {
await ctx.render('template', {
adjective: 'useful'
});
});
app.listen(3000);
const Handlebars = require('handlebars');
let options = {
cacheExpires: 60,
contentTag: 'content',
defaultLayout: 'default',
environment: 'development',
extension: '.hbs',
hbs: Handlebars.create(),
paths: {
views: path.join(__dirname, 'views'),
layouts: path.join(__dirname, 'layouts'),
partials: path.join(__dirname, 'partials'),
helpers: path.join(__dirname, 'helpers')
},
Promise: Promise
};
app.use(renderer(options));
The length of time, in seconds, to keep compiled Handlebars templates in the in-memory cache before recompilation. Defaults to 60
.
The name of the block used by layouts to render views. Defaults to content
, meaning views will be rendered onto layouts where {{{content}}}
appears.
The name of the layout to use by default if paths.layouts
is defined. Defaults to default
.
The current Node.js environment, used to determine whether or not to invalidate the contents of cached templates. If set to development
, cached templates will expire after the amount of time specified by cacheExpires
above. Defaults to process.env.NODE_ENV
.
The file extension used by template files. Defaults to .hbs
.
A Handlebars environment to use. If one is not provided, one will be created via Handlebars.create
when the middleware function is called.
An object literal of specified file paths. Required.
The path to a directory of view templates. Required.
The path to a directory of partial templates. If specified, all templates in the partials directory will be compiled and cached together. Optional.
The path to a directory of layout templates. Optional.
The path to a directory of helper functions contained in JavaScript files. If specified, all functions in the helpers directory will be loaded and made available to the Handlebars environment for rendering. Optional.
The constructor function to create internal Promises from. Defaults to the built-in Promise
object; has been tested to work with bluebird
.