Man*_*023 2 node.js express handlebars.js
我正在开发一个 node/express/handlebars 应用程序,我刚刚发现了自定义助手,但我不知道在哪里定义它们。
我尝试在实际视图模板 hbs 文件中的<script>标签中添加一些,如下所示:
<script type="text/javascript">
Handlebars.registerHelper('if', function(conditional, options) {
console.log("IN HANDLEBARS HELPER");
if (conditional) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
但是我得到一个未捕获的 ReferenceError: Handlebars is not defined。
我也找到了这个JSFiddle,但我的应用程序中没有任何看起来像那个代码的东西。我也看了十几篇教程,但它们几乎说的是官方文档所做的完全相同的事情。
那么我应该在 node/express 应用程序中的什么地方包含这段代码呢?
如果有人可以对这个问题有所了解,我们将不胜感激。
编辑: 我不确定这是否正确,但是您可以在设置视图引擎后将其放入 app.js 中:
var hbs = require('hbs');
hbs.registerHelper('test', function(conditional, options) {
//do something
if (conditional) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因这是不正确或有问题的,请告诉我。
我个人在根目录中创建了一个 helpers 文件夹,并将我所有的 helper 方法放在那里。然后,您可以在 app.js 中使用 require 并告诉 hbs 引擎您希望将该文件用于帮助程序。
// in app.js
const hbsHelpers = require('./helpers/handlebars');
...
app.engine('handlebars', exphbs({
helpers: hbsHelpers
});
Run Code Online (Sandbox Code Playgroud)