我可以使用knockout作为模板引擎吗?

时间:2012-07-12 11:32:02

标签: knockout.js jquery-templates knockout-2.0

我在我的项目中使用了knockout和jQuery.tmpl框架,有时我只使用jquery-tmpl生成这样的HTML:

var html = $("#template").tmpl(data);
html.appendTo(destElement);  

我不喜欢那个地方我有用于绑定的敲门模板和用于html生成以及绑定的某个jquery模板。

我想知道knockout是否能够像jquery tmpl那样从模板生成html。 如果是这样,我将完全删除jquery-tmpl,因为在大多数情况下我只使用它来生成模板中的html。

请咨询

1 个答案:

答案 0 :(得分:3)

AFAIK Knockout不支持将预编译模板存储为jQuery模板等JavaScript变量。

因此,您在问题中给出的示例不可能仅使用Knockout模板绑定。绑定确实提供了一些callbacks for post- and after-rendering,但是这与回调的输入不完全相同,这些回调是编译的DOM元素而不是JavaScript引用它。

在我们当前的项目中,我们使用Handlebars作为我们的模板引擎,这是我选择此选项的两个主要原因:

  1. jQuery模板已被弃用,目前没有官方插件存在且jQuery UI团队不清楚何时/是否会在核心中包含模板。
  2. 使用Handlebars,您可以将模板提取为单独的.handlebars文件,这些文件可以从命令行进行预编译。
  3. 我没有使用淘汰模板绑定,我的所有模板都被解压缩为单独的文件,并被预编译为单独的.js文件。我所要做的就是包含已编译的.js文件,我可以将模板作为JS变量访问。

    如果您选择jQuery模板并想要预编译模板,您必须将所有模板添加到一个HTML文件中并编写一些JavaScript来获取每个模板并将其转换为JavaScript或者您可以编写一个小节点应用程序,它接收你的模板,转换它们并再次输出它们。