我已经定义了一个定义路径和垫片的 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”声明应该使其能够访问主干(及其依赖)。
实际上这不起作用:
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
甚至不必在函数中定义它。
那么我做错了什么?