我发现大多数教程采用一个大的路由器。 例如:https://github.com/thomasdavis/backboneboilerplate/blob/gh-pages/js/router.js骨干通用路由器与单独的路由文件?
将路由(控制器)分为单独的文件不是更好吗?
如果是的话我怎么能结合这与requirejs?
我发现大多数教程采用一个大的路由器。 例如:https://github.com/thomasdavis/backboneboilerplate/blob/gh-pages/js/router.js骨干通用路由器与单独的路由文件?
将路由(控制器)分为单独的文件不是更好吗?
如果是的话我怎么能结合这与requirejs?
我认为这是优先考虑的问题。如果你正在用巨大的路线做一个巨大的应用程序,那么分割你的路由器是明智的。对于只有一个大型路由器的小型应用程序来说很好。
如果决定有多个路由器,请确保您没有冲突的路线,所以不会有任何意外行为或错误。
因此,与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?
});
我从来没有做过这样自己,但我不明白为什么如果保持路线从冲突的它不会工作。希望这会为你清除一些东西。
检查Backbone.js "fat router" design conundrum了:你可以找到@jakee回答有一些更多的选择