【问题标题】:Backbone.js Large mutli page app, manage page transitions cleanly destruction, creation etcBackbone.js 大型多页面应用,干净地管理页面转换,销毁,创建等
【发布时间】:2012-04-21 13:31:07
【问题描述】:

我目前正在构建一个巨大的主干应用程序(facebook 克隆)。

在过去的几天里,感谢 Rob Conery 的出色教程(如果您刚开始使用 MVC 3 和 BB http://tekpub.com/productions/mvc3,则必须查看 BB 中的一切工作方式)

现在我已经到了需要在我的应用程序中切换页面的阶段,并且我开始将其连接起来,但感觉就像我自己做了很多这样的事情。这很好,我知道我将能够做我想做的事。

我已经解决了内存泄漏问题,确保在切换页面时取消绑定并删除我的模型/集合/视图,Switching views in backbone for navigating between pages - whats the right way?

但除了这些东西之外,当我在页面之间切换时,我还想做一大堆任务。本质上是删除和添加页面的一部分。这稍微复杂一些,因为我不想仅仅删除所有内容,而是只删除/销毁需要更改的页面位,基于我想要进行的转换。

如前所述,我现在正在自己工作,但我想知道是否有一种模式来处理这个拆解过程,并保持事情清洁(而不是最终导致路由器非常臃肿(控制器膨胀!!!)

【问题讨论】:

标签: javascript design-patterns backbone.js


【解决方案1】:

木偶绝对是要走的路。具体来说,Marionette.Layout 非常适合在不重新渲染整个页面的情况下交换特定区域。查看 Derick 的一些 Example Apps 以熟悉该框架。

我建议您在使用普通的旧事件使您的应用正常工作之前远离路由器。然后添加路由器支持之后。基本上路由器应该被连接起来以反映你的应用程序的状态,但你不应该依赖它作为你的控制器。

顺便说一句,我在一个大型多模块 Backbone 项目中使用 RequrieJS,这真是天赐之物。这在 BB 社区中是有争议的,但如果你有很多相互依赖的组件并且你想让另一个框架处理所有依赖关系,那么值得研究一下。

【讨论】:

  • 就像戴夫在这个答案中指出的那样,布局会有所帮助。具体来说,Marionette.Region 对象将在换出视图时进行清理。布局是其中嵌入了区域的视图。
  • 谢谢大家,我现在正沉浸在木偶中。这是一个奇怪的一周,首先准备好骨干,撞到砖墙,然后整理好一切。有一段时间,木偶感觉就像回到了第一方,但我所做的是在我的本地环境中复制bbclonemail.heroku.com/#inbox,并且刚刚完成扩展它以在其中包含第三个应用程序(克隆邮件应用程序)感觉非常好以如此干净的方式布置一切。您认为使用它有什么缺点吗?
  • 我看到的唯一缺点是在 Backbone 之上学习另一层抽象的精神开销。但是,一旦您了解 Marionette,您就会开始考虑这些更高级别的概念,并且您会发现自己编写的相同样板代码更少。坚持下去,就值得了!
【解决方案2】:

我遇到了同样的问题并想分享我是如何解决它的,所以我使用我的页面转换约定重新设计了 Backbone.js 文档中的 ToDo 应用示例:

http://ahamlett.com/Backbone.localStorage/

我还没有测试它的内存泄漏,但是如果有一些只是在应用程序路由器的 SetView 方法中的 .remove() 之前调用 .unbind() 。

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 2018-01-31
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多