我已经定义了一个RequireJs配置定义路径和垫片:RequireJs:使用自动加载-DEPS与垫片
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"
}
}
});
正如你看到的最后一个“垫片”的声明应该使它能够访问骨干(和它的DEP )当我加载主App(-namespace)。
在现实中,这并不工作:
require(["app"], function($, _, Backbone, App){
app.router = new Backbone.Router.extend({
// routing and route actions
});
});
令我疑惑的是,在“脊梁 - boilderplate” - 项目,骨干(及其DEPS)可供选择这种方式: https://github.com/tbranyen/backbone-boilerplate/blob/master/app/main.js
甚至不必在函数中定义它。
那么我做错了什么?
尝试从扩展路由器的'require'函数中删除'$,_,Backbone'。我认为垫片的工作,以便他们只出口您不需要添加到任何调用的全局值 – jakee 2012-07-09 12:26:23
嘿,这很好:)我甚至可以在定义函数的deps数组中删除“主干”关键字虽然这在每个模块中都不起作用......您是否会创建一个答案,以便我可以解决这个问题? – 2012-07-09 14:37:55
完成,很高兴我能帮助! – jakee 2012-07-09 15:06:09