Handlebars Template Engine for Brick.js.
Run the Demo
demo/
directory contains a demo project. Run the demo:
git clone git@github.com:brick-js/brick-hbs.git
cd brick-hbs && npm install
cd demo && npm install
grunt
Open http://localhost:3000 in your browser!
Installation
npm install -S brick-hbs
Set template engine for brick.js
var brickJs = require('brick.js');
var Hbs = require('brick-hbs');
var brk = brickJs();
var hbs = Hbs.brick({
cache: false
})
brk.engine('.hbs', hbs);
brk.engine('.html', hbs);
app.use('/', brk.express);
Include Partials/Modules
In Brick.js, partials are organized as modules. Eg:
File footer/view.hbs
in module footer
:
<footer> Powered by Brick.js </footer>
File home/view.hbs
in module home
:
<html>
<body>
<p>Demo Page</p>
{{include 'footer'}}
</body>
</html>
The HTML for home
page will be rendered as:
<html>
<body>
<p>Demo Page</p>
<footer> Powered by Brick.js </footer>
</body>
</html>
Layout Extend
Brick-hbs implemented async helper internaly, to support layout extend. Eg:
File layout1/view.html
in module layout1
:
<html>
<title>Common Title</title>
<body>
{{{block}}}
</body>
</html>
Use {{block}}
for escaping.
File home/view.hbs
in module home
:
{{extend 'layout1'}}
<p> Contents for home page </p>
The HTML for home
page will be rendered as:
<html>
<title>Common Title</title>
<body>
<p> Contents for home page </p>
</body>
</html>
Options
cache
Type: Bool
Default: false
If set to true
, all templates will be loaded only once (for production usage). Otherwise, template file will be reloaded on every HTTP request.
Register New Helper
Above declared Hbs
object is compatible with Handlebars.
Javascript:
Hbs.registerHelper('upperCase', function(content) {
return content.toUpperCase();
});
Template:
<h3>{{upperCase 'alice'}}</h3>
Will be rendered as:
<h3>ALICE</h3>