我已经配置了requirejs来加载核心库(jQuery,下划线,主干)。 现在我想添加我的骨干模型,控制器,视图等异步加载Requirejs2:如何处理自己的文件?
我发现了很多教程这个主题和很多“准备好”样板不幸我提到,大多数方法是depreceated或相当复杂(即使有更好的方法)。
一个例子是我如何配置的主库requirejs: https://stackoverflow.com/a/10914666/1309847
因此,我怎么加载骨干意见,型号,类别,路由器,控制器和模板,用一简单和有效的Requirejs配置?
我跟着您选择的建议,但得到一些奇怪的错误
main.js
require.config({
paths: {
jquery: 'vendors/jquery/jquery',
underscore: 'vendors/underscore/underscore',
backbone: 'vendors/backbone/backbone'
},
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
require(['app'], function(app){
});
app.js
define(['jquery', 'underscore', 'backbone'], function($, _, Backbone){
var Message = new Backbone.Model.extend({
//idAttribute: '_id',
//defaults: { body: '' }
//url: function(){ return this.id ? '/messages/' + this.id : '/messages'; }
});
var newMessage = new Message({ body: 'hi' });
newMessage.save();
});
在app.js错误occours:
Uncaught TypeError: Object [object Object] has no method 'apply'
当我评论新的Backbone.Model.extend部分时,我不再有任何错误。
似乎加载下划线或主干网时出现问题。在app.js的第二行放置一个断点,并检查“_”或“Backbone”是否未定义。在这种情况下,请检查您的路径,以及libs版本寻求兼容性问题。如果一切都失败了,请尝试使用AMD骨干版本和undercore:https://github.com/amdjs – eabait
我做了一个console.log三个参数。所有三个看起来有效,但我已经指定了更多的错误。它发生在我想创建一个新的Message实例时。 (我也可以取消注释模式,但实例化会给出错误) –
好的,删除此行中的“new”“var Message = new Backbone.Model.extend”。它应该是var Message = Backbone.Model.extend – eabait