https://github.com/connorwiseman/koa-hbs-renderer
A Handlebars template renderer for Koa applications.
https://github.com/connorwiseman/koa-hbs-renderer
handlebars koa nodejs
Last synced: about 1 year ago
JSON representation
A Handlebars template renderer for Koa applications.
- Host: GitHub
- URL: https://github.com/connorwiseman/koa-hbs-renderer
- Owner: ConnorWiseman
- License: mit
- Created: 2017-04-16T16:30:06.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-10-31T19:28:28.000Z (over 8 years ago)
- Last Synced: 2025-03-25T21:21:59.544Z (about 1 year ago)
- Topics: handlebars, koa, nodejs
- Language: JavaScript
- Homepage:
- Size: 210 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# koa-hbs-renderer
[](https://www.npmjs.com/package/koa-hbs-renderer)
 [](https://travis-ci.org/ConnorWiseman/koa-hbs-renderer) [](https://codecov.io/gh/ConnorWiseman/koa-hbs-renderer)
[](https://david-dm.org/ConnorWiseman/koa-hbs-renderer)
[](https://david-dm.org/ConnorWiseman/koa-hbs-renderer?type=dev)
[](https://github.com/ConnorWiseman/koa-hbs-renderer/blob/master/LICENSE)
> A Handlebars template renderer for [Koa](https://github.com/koajs/koa) applications.
## Installation
```shell
npm install --save koa-hbs-renderer
```
## Usage
### views/template.hbs
```html
This is a template. Isn't that {{adjective}}?
```
### index.js
```javascript
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);
```
## Options
```javascript
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));
```
### cacheExpires
The length of time, in seconds, to keep compiled Handlebars templates in the in-memory cache before recompilation. Defaults to `60`.
### contentTag
The name of the block used by layouts to render views. Defaults to `content`, meaning views will be rendered onto layouts where `{{{content}}}` appears.
### defaultLayout
The name of the layout to use by default if `paths.layouts` is defined. Defaults to `default`.
### environment
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`](#cacheexpires) above. Defaults to `process.env.NODE_ENV`.
### extension
The file extension used by template files. Defaults to `.hbs`.
### hbs
A Handlebars environment to use. If one is not provided, one will be created via [`Handlebars.create`](http://handlebarsjs.com/reference.html#base-create) when the middleware function is called.
### paths
An object literal of specified file paths. _Required._
#### views
The path to a directory of view templates. _Required._
#### partials
The path to a directory of partial templates. If specified, all templates in the partials directory will be compiled and cached together. _Optional._
#### layouts
The path to a directory of layout templates. _Optional._
#### helpers
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._
### Promise
The constructor function to create internal Promises from. Defaults to the built-in `Promise` object; has been tested to work with [`bluebird`](https://github.com/petkaantonov/bluebird/).