单片骨干路由器

时间:2013-06-21 13:18:42

标签: javascript backbone.js url-routing

我目前正在学习Backbone.js的细节,但到目前为止我能找到的每个例子都使用以下路由器模式或其中的一些变体:

var MyRouter = Backbone.Router.extend({
    routes: {
        'foo/:id': 'foo',
        'bar/:id': 'bar',
        '': 'index'
    },

    foo: function(id) { /* ... */ },

    bar: function(id) { /* ... */ },

    index: function() { /* ... */ }
});

我完全理解这里发生了什么,但是我对这种模式非常关注,我(到目前为止)还没有找到解决方案。在任何大小的应用程序中,在一个地方指定所有路由将创建一个单片路由器。不仅涉及路由本身,还涉及控制器都属于路由器本身的(明显)要求。

如何在Backbone.js中为大规模模块化应用程序组织路由?

P.S。如果有人能指出我的Backbone.js教程或示例应用程序并非简单而且充满了不良做法,我将不胜感激。

2 个答案:

答案 0 :(得分:4)

查看this example project的创建者Derick Bailey的Backbone.Marionette

你可以看到他是如何在模块中组织他的应用程序的,每个模块都有一个负责处理路由的路由器。 Marionette中的模块概念类似于requirejs用于加载具有某些依赖性的代码部分的概念。

即使您不打算使用Marionette并坚持使用Backbone,您也可以找到一些关于他如何划分代码的有用见解。虽然我建议你评估木偶。

答案 1 :(得分:1)

我写了一个专门解决这个问题的Backbone插件: https://github.com/ModelN/backbone.subroute

这是一篇博客文章,介绍了如何设置,以及它背后的一些哲学: http://www.geekdave.com/2012/04/05/module-specific-subroutes-in-backbone/

我希望它有所帮助!