Render Handlebars templates seamlessly from strings or files, simplifying your templating workflow. Supports precompilation for enhanced performance.


Keywords
file, handlebars, hbs, precompile, render, string, template
License
ISC
Install
npm install hbsr@1.0.0

Documentation

hbsr

Render Handlebars templates seamlessly from strings or files.

GitHub code size in bytesnpm Node.js CI GitHub license npm GitHub issues CodeFactor Maintainability

Table of Contents

Installation

npm i hbsr

Usage

With a string template

const hbsr = require('hbsr');

let source = `
Dear {{{firstName}}}:

I am looking forward so seeing you on {{{date}}}!

Sincerely,

{{{author}}}
`;

let data = {
    firstName: "John",
    date: "Nov 26, 1962",
    author: "Jill"
}

let result = hbsr.render(source, data);
console.log(result);

With a template file

Create templates/letter.hbs with the following content:

Dear {{{firstName}}}:

I am looking forward so seeing you on {{{date}}}!

Sincerely,

{{{author}}}

Create sample.js like this;

const hbsr = require('hbsr');

let data = {
    firstName: "John",
    date: "Nov 26, 1962",
    author: "Jill"
}
let templateBasename = 'letter';

let result = hbsr.render_template(templateBasename, data);
console.log(result);

Template options

Template options reside in hbsr.options property:

Option Description Default
template_path Folder where template files reside ./templates -- relative to scripts execution location
template_extension Template file extension .hbs -- extension added to basename parameter
const hbsr = require('hbsr');

// displays ./templates
console.log(hbsr.options.template_path);

// displays
console.log(hbsr.options.template_extension)

Override default template options to match your preferences:

const hbsr = require('hbsr');

hbsr.options.template_path = '../../templates'; // templates reside two levels up inside template folder

// Set the new default template file extension to append to basename
// hbsr.options.template_extension = '.handlebars'

let data = {};
let r = hbsr.render_template('page', data); // use the ../../templates/page.hbs template

Using extra parameter to specify template options to match your preferences:

const hbsr = require('hbsr');

let data = {};
// Specify the template_path to in this instance
// and use the default template extension
let r = hbsr.render_template('page', data, {'template_path': '../../templates'})

Author

Ion Gireada - shytiger@yahoo.com

Licensing

This package is released under the MIT License.