node.js - Handlebars 帮助程序检索使用它的文件的基本名称

标签 node.js templates handlebars.js helper

我正在寻找一种创建帮助程序的方法,该帮助程序只需呈现放置模板的文件的基本名称,而不需要任何其他参数,如下所示:{{ basename }}.

换句话说,如果我在两个部分中使用此助手,例如 header.hbsnavbar.hbs,我希望渲染每个部分的名称在使用它们的地方的输出中。

我已经寻找了几个小时,但找不到任何答案。任何方向或指导将不胜感激。

最佳答案

在不太了解您的设置的情况下,这里是一种方法。

您需要在渲染函数中注册一个助手。然后您将调用渲染而不是编译。请注意,以下内容适用于后端,但您可以轻松地将其适应您的环境。

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);
};

关于node.js - Handlebars 帮助程序检索使用它的文件的基本名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15601236/

相关文章:

node.js - 正则表达式在 mongodb 命令行中工作,但不适用于 mongoose

c++ - 什么是 void (*op)(T &) 和 void (*op)(T &, void *)?

ember.js - Handlebars 和 Ember 包

javascript - 如何在 Handlebars.js 的表达式中存储模板?

javascript - Ember JS : Value assigned through JQuery or JavaScript not reflected in model

javascript - 如何防止 `gulp-uglify` 移动我的全局变量?

javascript - 使用#each 在 handlebars.js 中显示一些数据不显示

javascript - 如何以异步方式使用 pdfkit npm

c++ - 如何在模板函数中使用 typedef?

c++ - 初始化嵌套模板类