使用节点注册把手帮助器绝对没有任何意义

Ell*_*ert 4 node.js handlebars.js

我正在尝试写自己的车把助手,但我没有在哪里.我正在使用npm hbs包(Handlebars.registerHelper无效)并在app.js中注册它,如下所示:

app.set('view engine', 'hbs');
var hbs = require('hbs');

hbs.registerHelper("log", function(something) {
    return console.log(something);
});

hbs.registerHelper('test', function() { 
  return console.log('test')
});
Run Code Online (Sandbox Code Playgroud)

然而,{{log'test'}}或{{test}}我模板中的任何位置都没有任何内容.浏览器或终端控制台中没有生成js错误.我知道句柄正常工作,因为我有其他的hb变量正确显示.我在我的智慧结束这里试图做一些非常简单的事情,否则我不会因为问这么简单的问题而使自己感到尴尬.

感谢您的时间.

Ell*_*ert 7

感谢您输入mscdex,但您的回复无效.我将澄清我是如何在这里为其他新手把手工作的.我使用的是npm hbs包,因为我发现了很好的帮助示例.在深入研究之后,我之前的车把包"快递把手"在npm页面上有一些实际工作的例子.我认为我的主要困惑是不了解声明中第一个变量的定义.

下面是我的app.js文件中的代码,用于声明要使用的把手包.

var exphbs  = require('express-handlebars');
app.engine('.hbs', exphbs({defaultLayout: 'main', extname: '.hbs'}));
app.set('view engine', 'hbs');
Run Code Online (Sandbox Code Playgroud)

然后在特定页面的路径中,帮助程序的定义方式与标题或数据数组的方式相同:

res.render('editSite', {
      title: 'Update Existing Site\'s Data', siteVars: siteVars, helpers: {
            foo: function () { return console.log('test'); }
        }
    });
Run Code Online (Sandbox Code Playgroud)


msc*_*dex 3

您实际上需要从助手返回一个字符串。console.log()返回undefined。试试这个:

hbs.registerHelper("log", function(something) {
  console.log(something);
  return ''+something;
});

hbs.registerHelper('test', function() { 
  console.log('test');
  return 'test';
});
Run Code Online (Sandbox Code Playgroud)