Created
October 3, 2012 00:29
-
-
Save benw/3824204 to your computer and use it in GitHub Desktop.
Loads partial handlebars templates from files in a directory
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Helps with this problem: | |
// http://stackoverflow.com/questions/8059914/express-js-hbs-module-register-partials-from-hbs-file | |
var hbs = require('hbs'); | |
var fs = require('fs'); | |
var partialsDir = __dirname + '/../views/partials'; | |
var filenames = fs.readdirSync(partialsDir); | |
filenames.forEach(function (filename) { | |
var matches = /^([^.]+).hbs$/.exec(filename); | |
if (!matches) { | |
return; | |
} | |
var name = matches[1]; | |
var template = fs.readFileSync(partialsDir + '/' + filename, 'utf8'); | |
hbs.registerPartial(name, template); | |
}); |
on line 18 you want to return hbs.registerPartial(name, template);
I belive
Highly useful. Thanks.
Brilliant! Thank you for this :)
Thanks.. It works..
If you want to read the directory recursively. Use below code
var dir = path.join(__dirname, 'views');
//console.log(partialsDir);
const walkSync = (dir, filelist = []) => {
fs.readdirSync(dir).forEach(file => {
filelist = fs.statSync(path.join(dir, file)).isDirectory()
? walkSync(path.join(dir, file), filelist)
: filelist.concat(path.join(dir, file));
});
return filelist;
}
var filelist = walkSync(dir);
if (filelist.length > 0) {
filelist.forEach(function (filename) {
var matches = /^([^.]+).hbs$/.exec(path.basename(filename));
if (!matches) {
return;
}
var name = matches[1];
console.log(name);
var template = fs.readFileSync(filename, 'utf8');
Handlebars.registerPartial(name, template);
});
}
thanks you very helpful!
thanks a lot about it!! 🦀
@tapankumar thank you very much for the code. I have a question.
let's say our template structure is like below
Index.hbs
----partials
--------partial1.hbs
--------subfolder
------------partials-under-subfolder.hbs
Now how should I include the partials-under-subfolder
within index.hbs
template file?
@tapankumar thank you very much for the code. I have a question.
let's say our template structure is like belowIndex.hbs ----partials --------partial1.hbs --------subfolder ------------partials-under-subfolder.hbs
Now how should I include the
partials-under-subfolder
withinindex.hbs
template file?
had the same problem. seems like {{> subfolder_name/partial_under_subfolder.hbs}} should work
nm.
Handlebars, an html templating framework.
…On Wed, 20 Apr 2022 at 7:51 am, Michael Heilemann ***@***.***> wrote:
***@***.**** commented on this gist.
------------------------------
What does require(hbs) load?
—
Reply to this email directly, view it on GitHub
<https://gist.github.com/3824204#gistcomment-4138393>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAADAYTDDRNRDWFHKBTFDLLVF4TFZANCNFSM4LA6HKJA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks, very useful.