我已经定义了一个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"
}
}
});正如你所看到的,当我加载主应用程序(-namespace)时,最后一个"shim“声明应该使它能够访问backbone (并且它是deps)。
在现实中这是行不通的:
require(["app"], function($, _, Backbone, App){
app.router = new Backbone.Router.extend({
// routing and route actions
});
});让我纳闷的是,在" Backbone -boilderplate"-project中,Backbone(及其dep)是这样获得的:https://github.com/tbranyen/backbone-boilerplate/blob/master/app/main.js
甚至不必在函数中定义这一点。
那么我到底做错了什么呢?
发布于 2012-07-09 23:05:53
从您扩展路由器的require-function中删除$, _, Backbone-parameters。填充符导出全局值,因此不需要像常规依赖项那样在require或define调用中引用它们。
将它们作为参数传递会打乱全局变量,并且很可能导致全局变量未定义。
发布于 2013-01-22 19:02:53
从我所读到的内容来看,requirejs根据您在数组中指定的内容传递参数...因此,您的调用应如下所示:
require(["app"], function (App) { // less arguments
});或者像这样:
require(
["jquery", "underscore", "backbone", "app"], // more deps
function ($, _, Backbone, App) {
}
);https://stackoverflow.com/questions/11389715
复制相似问题