3

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

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

我不喜欢这样的地方,我有用于绑定的淘汰模板和用于 html 生成和绑定的 jquery 模板。

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

请指教

4

1 回答 1

3

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

因此,您在问题中给出的示例仅使用 Knockout 模板绑定是不可能的。绑定确实为渲染后和渲染后提供了一些回调,但是这并不完全相同,因为这些回调的输入是已编译的 DOM 元素,而不是对其的 JavaScript 引用。

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

  1. jQuery 模板已被弃用,目前不存在官方插件,并且 jQuery UI 团队不清楚它们何时/是否将模板包含在核心中。
  2. 使用 Handlebars,您可以提取模板以分离 .handlebars 文件,这些文件可以从命令行预编译。

我不使用淘汰模板绑定,我所有的模板都被提取到单独的文件中,并被预编译为单独的 .js 文件。我所要做的就是包含已编译的 .js 文件,我可以将模板作为 JS 变量访问。

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

于 2012-07-12T14:24:56.893 回答