【发布时间】:2013-02-08 17:02:46
【问题描述】:
我正在将 Backbone 和 Backbone.Marionette 集成到现有的 Web 应用程序项目中。我们计划暂时将所有现有功能留在项目中,但任何新功能我们都将利用 Backbone 结构化和 Marionette 原则。首要任务之一是确定 HTML 模板呈现库以及这些模板的数据绑定解决方案。以前,我们一直使用JsRender 和JsViews 来满足我们所有的模板需求和数据绑定,但我们愿意为我们的新功能探索新的途径。所以基本上我一直在研究各种解决方案,现在需要一些关于选择什么的建议或想法。到目前为止,这是我所看到的:
优点:似乎遵循 Backbone 的关注点分离理念,这有助于保持模板非常“干净”。
缺点:看起来您必须在视图中编写更多代码来定义绑定。此外,似乎缺乏进行条件渲染的能力,因此您必须始终渲染完整模板并仅切换某些元素的显示。
优点:在模板中处理更多数据绑定选项,而不会使模板过于混乱。
缺点:另外,似乎缺少条件渲染。
优点:通过属性处理各种数据绑定需求。
缺点:使用转换器很容易开始“弄脏”模板。必须添加另一个步骤才能从 Backbone 模型创建 Knockout 视图模型。
优点:类似于 Knockout 的能力,但语法不同。处理条件渲染。
缺点:过去我们通过在模板中添加太多业务逻辑来弄脏我们的模板,但这可能是我们可以纠正的开发问题。需要创建功能以将 JsViews 可观察性功能与 Backbone 模型事件联系起来。 StickIt 和 Knockback 等其他库会自动处理此问题。
我们还研究了介于 StickIt 和 Rivets 之间的 Backbone.ModelBinder。
谁能分享他们做出的任何决定以及他们为什么选择一个插件/库而不是另一个?我也愿意接受其他建议。谢谢。
【问题讨论】:
标签: data-binding backbone.js template-engine marionette rivets.js