【问题标题】:backbone without templates没有模板的主干
【发布时间】:2012-08-04 12:21:39
【问题描述】:

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

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

我看到的唯一可能出现的问题是,我对 jQuery 进行的持续检查是否会执行得足够快,但我想最后不应该是这样的问题。

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

【问题讨论】:

    标签: javascript backbone.js mustache handlebars.js


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      也就是说,如果渲染调用过多,或者您销毁并重新创建 DOM 元素/模板,则会在性能上付出很多代价。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        相关资源
        最近更新 更多