Dmi*_*ink 2 requirejs backbone.js
我想我并不完全理解require.js的工作方式.这是我创建的一个简单模块:
requirejs.config({
paths: {
'underscore' : 'libs/underscore-min',
'backbone' : 'libs/backbone-min'
}
});
define([
"underscore",
"backbone"
], function(_, Backbone) {
console.log(_);
console.log(Backbone);
var MyCollection = Backbone.Collection.extend({
initialize: function() {
this.on("all", function(event) {
console.log(event);
});
}
});
return MyCollection;
});
Run Code Online (Sandbox Code Playgroud)
我从我的HTML加载它:
<script data-main="js/mycollection.js" src="js/libs/require.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
问题是它间歇性地工作.有时我需要Backbone对象在函数中,有时它不会(并且给我http://requirejs.org/docs/errors.html#notloaded错误).如果我只是在浏览器中重新加载,我会得到50/50的更改工作.
我必须在这里遗漏一些非常基本的东西,报告的错误对我没有任何意义,我认为require.js机制的全部想法是只有在加载所有依赖项时才会调用我的函数.
由于Underscore和Backbone尚未定义为AMD模块,因此require.js不知道Underscore是Backbone的依赖项.所以我想在50%的情况下发生的事情是当Backbone尝试使用它时,Underscore没有被加载.
您可以使用require.js shim config http://requirejs.org/docs/api.html#config-shim告诉require.js有关依赖关系结构的信息.