没有模板的骨干

时间:2012-08-04 12:21:40

标签: javascript backbone.js mustache handlebars.js

拥有不依赖于任何模板系统的主干视图是不是一种坏习惯?

当然,这并不意味着将使用视图中的硬编码字符串手动生成任何类型的DOM代码。不不不。我当然可以缓存DOM元素中每个视图的基本布局,设置为display:none。但是,我想减少模板本身中的任何值设置。我更愿意在视图本身中使用jquery或任何其他类型的DOM修饰符形式。通过这种方式,我可以使用Mustache,Handelbars,Underscore模板系统等方式保存自己不断出现的差异以及无数小时的努力,我将应用程序和我自己的应用程序暴露出来。将所有视图逻辑集中在一个地方使一切变得更加清晰,至少在我看来。它提供了许多好处,例如适当的部分渲染,价值绑定等,如果我想用胡子或其他东西实现它们,我需要花费大量时间。

我看到的唯一问题是,我对jQuery执行的常量检查是否会执行得足够快,但我想最终不应该是这样的问题。

你怎么看?好?坏?实用?

2 个答案:

答案 0 :(得分:1)

恕我直言,不使用模板引擎本身并不是一个糟糕的设计决定。

模板引擎旨在生成更清晰,更易维护的代码,如果您认为不使用它们可以生成更清晰,更易维护的代码,您可以在没有它们的情况下运行它们。

我认为使用模板引擎更好,但这只是一个品味问题。我还通过this.$el.find(".my-element").html( "new value" );模板与手动DOM修改结合起来进行部分更新。

答案 1 :(得分:0)

模板很好。它们为您节省了大量的编码时间,并允许您循环元素并使用非常少的代码创建多个元素。

这就是说如果渲染被调用太多,或者你破坏并重新创建DOM元素/模板,那么它的性能会花费很多。

我有一个PerfView for backbone,可以在120fPS的chrome中以滚动视图显示1,000,000个模型。诀窍是我只使用我需要的所有可能节点渲染模板一次,然后在模型更改时更改DOM中的内容。同时使用DOM元素的对象池将允许您重用它们。查看第237行(https://github.com/puppybits/BackboneJS-PerfView/blob/master/index.html)上的modelMap属性,了解如何半自动更新元素,以免过度使用模板。