コアライブラリ(jquery、アンダースコア、バックボーン)をロードするようにrequirejsを構成しました。次に、バックボーンモデル、コントローラー、ビューなどを追加して、非同期でロードします。
私はこのトピックに関する多くのチュートリアルと多くの「準備ができた」定型文を見つけました。残念ながら、ほとんどのアプローチは廃止されているか、かなり複雑です(より良いアプローチがある場合でも)。
1つの例は、メインライブラリの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でエラーが発生します:
Uncaught TypeError: Object [object Object] has no method 'apply'
新しいBackbone.Model.extendパーツにコメントを付けても、エラーは発生しなくなりました。