# koa-hbs **Repository Path**: mirrors_leecade/koa-hbs ## Basic Information - **Project Name**: koa-hbs - **Description**: Koa Handlebars Templates - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-09 - **Last Updated**: 2026-02-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README koa-hbs ======= [Handlebars](http://handlebarsjs.com) Templates via for [Koa](https://github.com/koajs/koa/) [![Build Status][travis-badge]][repo-url] ## Usage koa-hbs is middleware. We stash an instance of koa-hbs for you in the library so you don't have to manage it separately. Configure the default instance by passing an [options](#options) hash to #middleware. To render a template then, just `yield this.render('templateName');`. Here's a basic app demonstrating all that: ```javascript var koa = require('koa'); var hbs = require('koa-hbs'); var app = koa(); // koa-hbs is middleware. `use` it before you want to render a view app.use(hbs.middleware({ viewPath: __dirname + '/views' })); // Render is attached to the koa context. Call `this.render` in your middleware // to attach rendered html to the koa response body. app.use(function *() { yield this.render('main', {title: 'koa-hbs'}); }) app.listen(3000); ``` After a template has been rendered, the template function is cached. `#render` accepts two arguements - the template to render, and an object containing local variables to be inserted into the template. The result is assigned to Koa's `this.response.body`. ### Registering Helpers Helpers are registered using the #registerHelper method. Here is an example using the default instance (helper stolen from official Handlebars [docs](http://handlebarsjs.com): ```javascript hbs = require('koa-hbs'); hbs.registerHelper('link', function(text, url) { text = hbs.Utils.escapeExpression(text); url = hbs.Utils.escapeExpression(url); var result = '' + text + ''; return new hbs.SafeString(result); }); ``` `registerHelper`, `Utils`, and `SafeString` all proxy to an internal Handlebars instance. If passing an alternative instance of Handlebars to the middleware configurator, make sure to do so before registering helpers via the koa-hbs proxy of the above functions, or just register your helpers directly via your Handlebars instance. ### Registering Partials The simple way to register partials is to stick them all in a directory, and pass the `partialsPath` option when generating the middleware. Say your views are in `./views`, and your partials are in `./views/partials`. Configuring the middleware via ``` app.use(hbs.middleware({ viewPath: __dirname + '/views', partialsPath: __dirname + '/views/partials' })); ``` will cause them to be automatically registered. Alternatively, you may register partials one at a time by calling `hbs.registerPartial` which proxies to the cached handlebars `#registerPartial` method. ### Layouts Passing `defaultLayout` with the a layout name will cause all templates to be inserted into the `{{{body}}}` expression of the layout. This might look like the following. ```html