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变量正确显示.我在我的智慧结束这里试图做一些非常简单的事情,否则我不会因为问这么简单的问题而使自己感到尴尬.
感谢您的时间.
感谢您输入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)
您实际上需要从助手返回一个字符串。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)