节点/快速把手 - 在何处定义自定义助手

时间:2016-07-29 14:26:55

标签: node.js express handlebars.js

我正在开发一个node / express / handlebars应用程序,我刚刚发现了自定义帮助程序,但我不知道在哪里定义它们。

我尝试在<script>标记的实际视图模板hbs文件中添加一些,如下所示:

<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>

但是我得到了一个Uncaught ReferenceError:没有定义Handlebars。

我也发现了这个JSFiddle,但我的应用中没有任何类似代码的内容。我还看过十几个教程,但他们几乎都说官方文档完全相同。

那么我在哪里准确地将这些代码包含在node / express app中呢?

如果有人能对这个问题有所了解,我们将不胜感激。

修改 我不确定这是否正确,但您可以在设置视图引擎后将其放入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);
  }
});

如果由于某种原因这不正确或有问题,请告诉我。

2 个答案:

答案 0 :(得分:1)

我个人在根目录中创建了一个helpers文件夹,并将所有帮助方法放在那里。然后,您可以进入app.js并告诉hbs引擎您要将该文件用于帮助程序。

// in app.js

const hbsHelpers = require('./helpers/handlebars');
...
app.engine('handlebars', exphbs({
  helpers: hbsHelpers
});

答案 1 :(得分:0)

这个解决方案适合我。

inside app.js
below 
app.set('view engine', 'hbs');

//example get local date

var hbs = require('hbs');

hbs.registerHelper('dateLocal', function(fecha) {
   return new Date(fecha).toLocaleDateString();
});