1.0.1 • Published 4 years ago

flyweight-handlebars v1.0.1

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

Flyweight Handlebars

Flyweight handlebars is an util to make easier the compilation, updating and rendering of files. You set the basePath for the templates, and then you get the handlebars compiled just by using the path (e.g. 'dir/template.html'). This package updates the compiled file when the file is modified (it controls if the file was modified since it was compiled, so it works as a hot-reload). It also prevents memory leaking by controlling the last time one template was used. If it wasn't used in the specified interval, it deletes the compilation from memory. You can also access handlebars (by its method getHandlebars(), so you can also use handlebars features like registerHelpers).

For more information about handlebars, you can check the docs: Handlebars docs.

Installation

npm install flyweight-handlebars

Usage

const FlyWeightHandlebars = require('flyweight-handlebars');
const hb = new FlyWeightHandlebars();
hb.setMaxDuration(60); // A compiled file will be erased from memory if it wasn't used in the last 60 seconds.
hb.setControlInterval(10); // It will make the memory control every 10 seconds.
hb.setTemplatesPath('./templates'); // All the files in ./templates can be reached. 

// My template is actually the handlebars rendering function.
const myTemplate = hb.getTemplate('main/main.html'); // If you don't specify encoding, default is utf-8.
// You use variables like in handlebars.
const rendered = myTemplate({variable: 'someVariable'}); 

// Get filenames from compilations in memory.
console.log(hb.getTemplatesFiles()); // Outputs: ["main/main.html"].

// Gives access to Handlebars.
hb.getHandlebars().registerHelper('some-helper', () => 'personalized helper');

// Removes it from memory.
hb.remove('main/main.html');

//Removes all templates from memory.
hb.empty();

All methods

MethodDescription
setTemplatesPathSets the dir in which it will look for every template.
setMaxDurationSets how much time it will keep the compiled files in memory.
getMaxDurationGets how much time compiled files are kept in memory.
setControlIntervalSets the interval between each memory control.
countTemplatesInMemoryGets how many templates it has in memory.
getHandlebarsGets the handlebars instance.
getTemplateCompiles and returns the rendering function for the specified file.
getTemplatesFilesReturns an array with all the filenames in memory.
removeRemoves a compiled file from memory by its name ("main/main.html").
emptyRemoves all the compiled files from memory.

License

MIT © Matías Puig