10

我正在将 Backbone 和 Backbone.Marionette 集成到现有的 Web 应用程序项目中。我们计划暂时将所有现有功能留在项目中,但任何新功能我们都将利用 Backbone 结构化和 Marionette 原则。首要任务之一是确定 HTML 模板呈现库以及这些模板的数据绑定解决方案。以前,我们一直在使用JsRenderJsViews来满足我们所有的模板需求和数据绑定,但我们愿意为我们的新功能探索新的途径。所以基本上我一直在研究各种解决方案,现在需要一些关于选择什么的建议或想法。这是我到目前为止所看到的:

Backbone.StickIt

优点:似乎遵循 Backbone 的关注点分离理念,这有助于保持模板非常“干净”。

缺点:看起来您必须在视图中编写更多代码来定义绑定。此外,似乎缺乏进行条件渲染的能力,因此您必须始终渲染完整模板并仅切换某些元素的显示。

铆钉.js

优点:在模板中处理更多的数据绑定选项,而不会使其过于混乱。

缺点:此外,似乎缺乏条件渲染。

击退/击倒

优点:通过属性处理各种数据绑定需求。

缺点:很容易开始使用转换器“弄脏”模板。必须添加另一个步骤才能从 Backbone 模型创建 Knockout 视图模型。

JS视图

优点:类似于 Knockout 的能力,但语法不同。处理条件渲染。

缺点:过去我们通过在模板中添加太多业务逻辑来弄脏我们的模板,但这可能是我们可以纠正的开发问题。需要创建功能以将 JsViews 可观察性功能与 Backbone 模型事件联系起来。StickIt 和 Knockback 等其他库会自动处理此问题。

我们还研究了介于 StickIt 和 Rivets 之间的 Backbone.ModelBinder

任何人都可以分享他们做出的任何决定以及他们为什么选择一个插件/库而不是另一个?我也愿意接受其他建议。谢谢。

4

1 回答 1

2

我用过这些

小胡子.js

Pro's: mustache 不仅支持变量绑定,还可以处理函数绑定。例如你可以有

<a href="{{test}}" >click me </a>

然后在你看来有一个方法叫做test。这节省了很多将类/ID分配给链接的冗余,并在视图类中绑定事件。

缺点:我不喜欢它的语法。

接下来我在Ruby on Rails 中使用coffeescript,它内置了jst eco 模板系统。专业人士是,您将模板放在单独的文件中。在页面加载时,它们会绑定到 dom 中的全局变量。这些是缩小的,比一些伪脚本模板标签要好得多。另一个专业人士是,您编写 if else 和 for 循环,就像在 ruby​​ 中一样。缺点是,它们使用 razor 标签,并且不允许与服务器端代码轻松混合(如翻译)。

其他库当然是下划线模板引擎。非常简单,但非常强大。Proside,您已经可以使用它(主干需要下划线)。缺点是,您不能(默认情况下)从外部文件加载模板。我已经通过使用服务器端代码(require_once,渲染部分)解决了这个问题。但是,如果您使用 require.js 以及文本插件 ( http://requirejs.org/docs/download.html#text ),那么您可以将模板作为依赖项加载。

于 2013-02-08T22:32:02.870 回答