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