单片骨干路由器

Monolithic Backbone Router

本文关键字:路由器 单片骨      更新时间:2023-09-26

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

注:

如果有人能给我指出一个Backbone.js教程或示例应用程序,不是琐碎的简单和塞满了不好的做法,我将不胜感激。

让我们来看看这个来自Derick Bailey的例子项目,他是Backbone.Marionette的创造者。

你可以看到他是如何在模块中组织他的应用的,每个模块都有一个路由器来处理路由。在Marionette中,模块的概念类似于require加载部分具有特定依赖关系的代码所使用的模块。

即使你不打算使用Marionette而只是坚持使用Backbone,你也可以从他如何划分代码中找到一些有用的见解。不过我建议你评估一下《木偶》

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

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

我希望它有帮助!