パスとシムを定義するRequireJs構成を定義しました。
require.config({
// define application bootstrap
deps: ["main"],
// define library shortcuts
paths: {
app: "app"
, jquery: "lib/jquery"
, underscore: "lib/underscore"
, backbone: "lib/backbone"
, bootstrap: "lib/bootstrap"
},
// define library dependencies
shim: {
jquery: {
exports: "$"
},
underscore: {
exports: "_"
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
bootstrap: {
deps: ['jquery'],
exports: "bootstrap"
},
// main application
app: {
deps: ["backbone"],
exports: "App"
}
}
});
ご覧のとおり、最後の「shim」宣言は、メインのApp(-namespace)をロードするときにバックボーンにアクセスできるようにする必要があります(そしてそれはdepsします)。
実際には、これは機能しません。
require(["app"], function($, _, Backbone, App){
app.router = new Backbone.Router.extend({
// routing and route actions
});
});
私が不思議に思うのは、「backbone-boilderplate」プロジェクトでは、Backbone(およびその詳細)が次のように利用できることです: https ://github.com/tbranyen/backbone-boilerplate/blob/master/app/main.js
関数でこれを定義する必要さえありませんでした。
だから私は何が間違っているのですか?