【问题标题】:Switching views in backbone for navigating between pages - whats the right way?在主干中切换视图以在页面之间导航 - 正确的方法是什么?
【发布时间】:2012-02-13 03:00:39
【问题描述】:

我已决定将我的应用程序路由更改为客户端而不是服务器端。这意味着当用户浏览网站时,我将需要一种在页面内外切换视图的方法。我唯一能找到的试图记录这一点的是这篇文章:How to switch views using Backbone.js

我知道这是如何工作的,但我认为这不是一个很好的方法。我想保留我的观点——因为这就是重点,对吧?对应用程序的可区分部分有单独的视图?我认为拥有一个大的“ContentView”,然后将内容拉入其中并重新渲染有点粗糙,并且绕过了您可以通过其他方式执行的所有很酷的模块化。

那么最好的方法是什么?理想情况下,我想要一个类似于上述文章中记录的函数,但将主干视图作为其参数。

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    我已经写了几篇关于这个主题的文章:

    http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

    还有一个更新的,它从这篇文章中汲取了想法并将其形式化:

    http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/

    在大多数情况下,重用视图实际上是一种反模式。通常有很多额外的代码和额外的琐事涉及保持查看实例,让它们重新连接到 DOM 并正确处理注册的 DOM 事件。此外,您还存在内存泄漏的风险(我的第一篇文章谈到了这一点),并通过使用过多的内存来破坏您的应用程序性能。

    如果您的视图正在使用“昂贵”的资源,您应该将该资源缓存在视图之外并重新使用它。您的视图的创建、渲染、显示和销毁应该便宜且快速。

    【讨论】:

    • 首先,非常棒的阅读,您的博客已直接进入我的 RSS 提要。我现在正在考虑搬到木偶。您对 requireJS 之类的 require 库及其与此的使用有何看法?我想一旦实现客户端路由,有用性就会过期......
    • 木偶完全支持requirejs,我的许多客户都将它与木偶一起使用。我个人不会在自己的项目中使用它,但这只是个人喜好。它确实解决了一些实际问题,并且是目前 JS 社区中的重要工具。真正的考验将是在 JS 在浏览器中获得真正的模块系统之后,它是否需要继续存在。
    • 不要忘记在 View#render() 方法中添加this.delegateEvents(),否则在重新渲染视图后不会触发events:{"click .button": "doStuff"}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2021-06-30
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多