骨干通用路由器与单独的路由文件?

时间:2012-06-29 12:04:55

标签: backbone.js requirejs

我发现大多数教程都使用一个大型路由器。 例如:https://github.com/thomasdavis/backboneboilerplate/blob/gh-pages/js/router.js

将路线(控制器)分成单独的文件不是更好吗?

如果是,我如何将其与requirejs结合使用?

2 个答案:

答案 0 :(得分:2)

我认为这是一个偏好问题。如果您正在使用大量路由进行大量应用,那么将路由器分开是明智的。对于只有一个大型路由器的小型应用程序就可以了。

如果您决定使用多个路由器,请确保没有冲突路由,因此不会出现任何意外行为或错误。

所以使用requireJS:我认为最好的方法是在它自己的文件中定义每个路由器,如下所示

define([blaa, blaa], function(Blaa, Blaa) {

  var SubRouter1 = Backbone.Router.extend({

    // work your routing magic here, remember to make no conflicting routes

  });

  return SubRouter1;
});

如果您设置了所有所需的路由器,则可以将其捆绑在app.js

define([...,'subrouter1', 'subrouter2', ... , 'subrouterN', ...],
function(..., SubRouter1, SubRouter2, ... , SubRouterN, ...) {

  // work your app magic here

  initialize: function() { // or wherever you start your application
    subrouter1 = new SubRouter1();
    subrouter2 = new SubRouter2();
    ...
    ...
    subrouterN = new SubRouterN();
    Backbone.history.start(); // remember to start the history 
  },

  // maybe work some more magic?
});

我自己从来没有这样做,但我不明白为什么如果你保持路线不冲突就行不通。希望这能为你清除一些东西。

答案 1 :(得分:0)

检查Backbone.js "fat router" design conundrum:您可以在那里找到@jakee的答案以及更多选项