2012-08-04 72 views
3

骨干视图不依赖于任何模板系统是不好的做法吗?没有模板的主干

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

我看到的唯一问题是可能会发生的问题是,我用jQuery做的常量检查是否会执行得足够快,但我想最终应该不会出现这样的问题。

您认为如何?好?坏?实际的?

回答

1

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

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

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

0

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

这表示如果渲染调用过多或者您销毁并重新创建DOM元素/模板,它在性能上会花费很多。

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