ほとんどのチュートリアルで 1 つの大きなルーターが使用されていることがわかりました。例: https://github.com/thomasdavis/backboneboilerplate/blob/gh-pages/js/router.js
ルート (コントローラー) を別々のファイルに分けたほうがよいのではないでしょうか?
はいの場合、これをrequirejsと組み合わせるにはどうすればよいですか?
ほとんどのチュートリアルで 1 つの大きなルーターが使用されていることがわかりました。例: https://github.com/thomasdavis/backboneboilerplate/blob/gh-pages/js/router.js
ルート (コントローラー) を別々のファイルに分けたほうがよいのではないでしょうか?
はいの場合、これをrequirejsと組み合わせるにはどうすればよいですか?
これは好みの問題だと思います。無数のルートを持つ巨大なアプリケーションを実行している場合、ルーターを分割することは理にかなっています。小規模なアプリケーションの場合、大きなルーターが 1 つだけあれば問題ありません。
複数のルーターを使用する場合は、競合するルートがないことを確認してください。予期しない動作やエラーが発生することはありません。
したがって、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の「ファットルーター」設計の難問をチェックしてください。@jakeeの回答とその他のオプションが見つかります