/handlebars

Handlebars template engine for Deno

Primary LanguageTypeScriptMIT LicenseMIT

Handlebars template render for Deno

test

Official handlebars docs: Guide

How to use renderer

import { Handlebars, HandlebarsConfig } from "jsr:@danet/handlebars";

// First, create instance of Handlebars

const handle = new Handlebars();

// or with custom config
const handle = new Handlebars({
    ...
});

// by default uses this config:
const DEFAULT_HANDLEBARS_CONFIG: HandlebarsConfig = {
    baseDir: 'views',
    extname: '.hbs',
    layoutsDir: 'layouts/',
    partialsDir: 'partials/',
    cachePartials: true,
    defaultLayout: 'main',
    helpers: undefined,
    compilerOptions: undefined,
};

// then render page
import { Application, Router } from 'jsr:@oak/oak';
const app = new Application();
const router = new Router();
app.use(async function(ctx, next) {
    ctx.state.handlebars = new Handlebars();
    await next();
});
router.get('/', async function(ctx) {
    ctx.response.body = await ctx.state.handlebars.renderView('index', { name: 'Alosaur' });
);

Rendering in development mode

By default partials are registered (and so cached) the first time you call renderView. However, in development, it may be better to re-register them every time you render a view so that the rendering reflects the latest changes you have made to your partials.

You can ensure this happens by setting cachePartials to be false in your configuration.