我正在寻找一种方法来创建一个帮助程序,只需呈现放置模板的文件的基本名称,而不需要任何其他参数,如:{{ basename }}
。
换句话说,如果我在两个部分中使用了这个帮助器,比如说header.hbs
和navbar.hbs
,我希望每个部分的名称都可以在输出的任何地方呈现。
我已经找了好几个小时,找不到任何答案。任何方向或指导都将不胜感激。
答案 0 :(得分:1)
在不了解您的设置的情况下,这是一种方法。
您需要在渲染功能中注册一个帮助器。然后,您将调用render而不是compile。请注意,以下内容适用于后端,但您可以轻松地将其适应您的环境。
Handlebars没有你的环境概念所以你需要在某个地方全局设置它。
exports.render = function (name, req, context) {
if (isBrowser()) {
throw new Error('Render cannot be called client-side.');
}
handlebars.registerHelper('basename', function() {
var host = globalBasenameSetFromEnvironment;
return host;
});
if (!handlebars.templates[name]) {
throw new Error('Template Not Found: ' + name);
}
return handlebars.templates[name](context);
};
答案 1 :(得分:0)
这是渲染文件时需要在上下文中公开的内容。
例如,假设我们在文件路径“some / template.hbs”中有一个模板,其中包含以下内容
Basename is: "{{basename}}"
我们可以像这样呈现:
var fs = require('fs');
var hbs = require('handlebars');
var filepath = 'some/template.hbs';
var tmpl = fs.readFileSync(filepath, 'utf8');
var fn = hbs.compile(tmpl);
var str = fn({
path: filepath,
basename: path.basename(filepath)
});
console.log(str);
// Basename is: "template.hbs"