2012-03-21 97 views
2

我有一个带有require.js,backbone.js和jquery的web应用程序。
该应用的简要结构如下:更改我的backbone.js路由器

  • 有屏幕(工具栏和下面主要内容)2个部分。

  • 有多个组件(地址管理,事件管理),每个组件都由一个哈希碎片更改触发,并且需要一个 页面转换。

  • 有一个backbone.js路由器。这是应用程序的核心。路由器被激活一个新的哈希片段(手动输入, 后退按钮,菜单项选择)。

直到现在,在路由器中,我做了页面转换,我直接调用了所选组件的控制器(“骨干视图”)。

所以有一个CENTRAL处理控制器调用。

但是现在必须改变为DISTRIBUTED处理。我现在需要响应来自两个不同位置的新哈希碎片:从工具栏组件和路由器。
所以我的想法是与pub sub交换直接控制器调用机制。现在MULTIPLE组件可以注册一个特殊的动作,而路由器只是“触发事件”。

我搜索周围,发现Chaplin(https://github.com/moviepilot/chaplin),backbone.js示例应用程序。

卓别林的开发商似乎有一个名为“ApplicationView”(https://github.com/moviepilot/chaplin#toc-router-and-route)一个类似的事情:“路由器和控制器之间,还有的ApplicationView作为 调度程序”

有没有人已经拥有过这样的架构,并且可以告诉我他在这方面的经验,或者有人以其他方式解决了这个问题?

回答

2

我在this project中使用了一个类似的,虽然也许不那么复杂的架构。我在this answer to a related question给了一个很好的解释。简短的概述:

  • 我管理该改变使用单State模型的工作方式类似于卓别林的发布/订阅架构的应用程序状态应用范围的事件。这只是一个基本的Backbone模型,有一些添加的方法用于处理字符串的序列化和反序列化属性,所以它们可以在URL中设置。

  • 通过在app.state上设置属性来更改应用程序状态以响应用户交互或其他输入的应用程序组件。需要在应用程序状态的变化通过app.state结合change事件,这样做更新

  • 组件(它看起来这是完全相同的方式卓别林的mediator作品,虽然他们改名以适应发布/订阅模式的方法) 。

  • 我把我的路由器看作是更新地址栏并响应用户输入的专门视图。更改地址(手动或通过单击链接)导致路由器在app.state模型上进行必要的更改,其他所有更新都会相应更新。

我希望这很有帮助 - 我认为它比卓别林方法简单一些。