handlebars.js中的模板是什么?

时间:2015-09-18 01:01:29

标签: handlebars.js

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奇怪,在他们的文档中没有很好地解释?

2 个答案:

答案 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"