在indexview模块中不会调用Backbone。
使用requirejs 2.1.5 / 2.1.4和backbonejs 0.9.10
运行r.js后main.js
...
// this is causing the backbone to return
// null/undefined in the next define call below
define("backbone", function(){});
define('views/index/IndexView', [
'underscore',
'backbone',
'text!templates/index/indexTemplate.html'
], function(_, Backbone, indexTemplate){
console.log(Backbone); // returns undefined
var IndexView = Backbone.View.extend({
...
但是如果我取出第一个将骨干作为模块注册的定义调用,那么一切 工作良好。但是backbone-min.js会单独加载。但就目前而言,这是唯一的方法 使脚本运行。我在这里肯定遗漏了一些东西。
main.js
require.config({
paths: {
underscore : 'libs/underscore/underscore-min',
backbone : 'libs/backbone/backbone-min'
templates : '../templates'
},
shim: {
'backbone': {
deps: ['jquery','underscore'],
exports: 'Backbone'
}
}
});
require(['app'], function(App){
App.initialize();
});
build.js
({
appDir: "../",
baseUrl: "js",
dir: "../../build",
optimize: "none",
paths: {
"jquery": "libs/requirejs/require-jquery",
"underscore" : 'libs/underscore/underscore-min',
"backbone": 'libs/backbone/backbone-min',
"templates": '../templates',
},
modules: [
{
name: "main",
exclude: ["jquery"]
}
]
})
我仍然在用骨干和必需品弄湿我的脚。 任何反馈都非常感谢。
答案 0 :(得分:0)
首先,您不需要定义('骨干',...)。无论如何,这部分是什么?您不需要将Backbone定义为模块。 Requirejs正在完成使Backbone可供您在整个框架中使用的工作。正如您在代码中看到的那样,通过调用Backbone.View.extend(),Backbone已经存在。如果要检查它,请不要使用console.log,而是使用console.dir。在chrome检查器中,它可以很好地格式化输出。
其次,将下划线添加到垫片中的骨干deps数组中。
答案 1 :(得分:0)
我刚刚遇到这个问题,你需要将main.js中的'shim'添加到你的build.js文件中,并且会像魅力一样工作;)