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

标签 knockout.js jquery-templates knockout-2.0

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

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

我不喜欢某处我有用于绑定(bind)的 knockout 模板和某处用于 html 生成和绑定(bind)的 jquery 模板。

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

请多多指教

最佳答案

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

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

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

  1. jQuery 模板已弃用,目前不存在官方插件,jQuery UI 团队不清楚他们何时/是否会在核心中包含模板。
  2. 借助 Handlebars,您可以将模板提取为单独的 .handlebars 文件,这些文件可以从命令行进行预编译。

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

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

关于knockout.js - 我可以使用 knockout 作为模板引擎吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11450906/

相关文章:

knockout.js - 设置多个类时与 $index 的 CSS 绑定(bind)

knockout.js - Knockout 通过 id 在一个页面中绑定(bind)多个 View 模型

javascript - 检查 jquery tmpl 中 if 语句中对象中的 null 值

javascript - 根据某些条件,Knockout JS 绑定(bind)到可观察对象内的数组元素

javascript - jQuery 事件在 "cleaning"Knockout 绑定(bind)后未触发

javascript - Knockout、Web API 和 SignalR - 未捕获的类型错误

arrays - 数组内部的 jquery 模板数组

backbone.js - Backbone.Marionette 模板异步加载

javascript - knockout js与datetimepicker绑定(bind)给出了一个异常

javascript - 使用 Knockout 绑定(bind)到两个对象的复选框