【发布时间】:2013-03-07 19:42:09
【问题描述】:
在 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"]
}
]
})
我的脚还在被骨干和 requirejs 弄湿。 非常感谢任何反馈。
【问题讨论】:
-
它必须在您的配置中。在我的构建中,require 块看起来像这样:define("backbone", ["jquery","underscore"], (function (global) { return function () { var ret, fn; return ret || global.Backbone ; }; }(这)));请注意,我的 shim.js 中也有下划线
-
您能否将
mainConfigFile添加到您的build.js 文件中,如下所示:mainConfigFile: 'app/main.js'然后重新构建?
标签: backbone.js requirejs