2

我目前正在学习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 中为大型模块化应用程序组织路由?

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

4

2 回答 2

4

看看Backbone.Marionette的创建者 Derick Bailey 的这个示例项目

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

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

于 2013-06-21T13:27:02.707 回答
1

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

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

我希望它有帮助!

于 2013-08-07T01:45:40.007 回答