【发布时间】:2012-07-08 12:52:34
【问题描述】:
我已经定义了一个定义路径和垫片的 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"
}
}
});
正如您所见,当我加载主 App(-namespace) 时,最后一个“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
甚至不必在函数中定义这个。
那我做错了什么?
【问题讨论】:
-
尝试从扩展路由器的
require函数中删除$, _, Backbone。我认为垫片的工作原理是它们只导出不需要添加到任何调用中的全局值 -
嘿,效果很好 :) 我什至可以在定义函数的 deps-array 中删除“backbone”关键字,尽管这在每个模块中都不起作用......你会创建一个答案吗所以我可以结束这个问题?
-
完成,很高兴能帮上忙!
标签: backbone.js requirejs