handlebars.js文档介绍了一个带有此示例的模板:
var template = Handlebars.compile('{{foo}}');
template({});
如果在控制台中检查模板变量,它包含:
function (context, options) {
if (!compiled) {
compiled = compile();
}
return compiled.call(this, context, options);
}
这是一个模板怎么样?我理解模板是一些带有变量的html,而不是函数。
此外,关于电话:
template({});
这个空函数调用是什么?这对于javascript程序员来说是否是常见且明显的,例如。我错过了一些让我无法识别它的基础知识吗?或者这是一些handlebars.js奇怪,在他们的文档中没有很好地解释?
答案 0 :(得分:1)
模板为'{{foo}}'
。编译时,你得到一个带上下文的函数; context为模板提供变量绑定。因此,template({ foo: 17 })
应该根据上面的模板生成"17"
。 template({})
会使用{{foo}}
的表示形式呈现undefined
,从而生成一个空字符串。
答案 1 :(得分:1)
在Handlebars中实现,模板是一个功能。您使用模板数据调用该函数并返回填充的模板。
模板数据是一个对象,其中的键对应于模板中{{}}内的名称。这些键的值将被注入到键名称为的模板中。
因此,在您的示例中,template({})
生成""
,但template({"foo":"blah"})
生成"blah"
。
稍微完整的例子:
var template = Handlebars.compile('{{greeting}}, my name is {{name}}');
template({"greeting":"Hello","name":"Alice"})
// "Hello, my name is Alice"