0

とても簡単な質問があります。どのように BackboneJS をロードし、requireJS を使用せずにモジュールで使用しますか?

私は 1 つのモジュールしか使用していないため、すべてのバックボーン ビュー、モデル、およびコレクションがそのファイルに含まれます。

index.html

<!-- libraries 10k zipped-->
<script src='js/libs/underscore-min.js'></script>
<script src='js/libs/backbone-min.js'></script>

<!-- modules -->
<script src='js/game.js'></script>

game.js

window.onload = (function(Backbone){

    var Input = Backbone.View.extend({  
            events: {
                'mousedown' : 'handleMouseDown',
                'mouseup'   : 'handleMouseUp',
            },

            handleMouseDown: function(){
                console.log('mousedown');
            },

            handleMouseUp: function(){
                console.log('mouseup');
            }
    }), 

    input = new Input;
    return input;
})();
4

2 に答える 2

1

ほんの数回の微調整が必​​要だと思います。

jquery.jsまず、 と の前underscore-min.jsに引き込みbackbone-min.jsます。

次に、$(function() { ... })何かを明示的に割り当てる代わりに使用できますwindow.onload

$(function() {
    var Input = Backbone.View.extend({...
    //...
});

あなたwindow.onloadには2つの問題があります:

  1. 関数の引数として使用していますが、関数を呼び出すときにBackbone値を指定していません。Backbone
  2. 関数を呼び出して、その戻り値を に代入していますwindow.onloadwindow.onloadではなく、関数にする必要がありますnew Input

本当に使いたい場合はwindow.onload、次のようにします。

window.onload = function() {
    var Input = Backbone.View.extend({  
    /* ... */
};

<script src='js/libs/backbone-min.js'></script>グローバルを提供するBackboneので、 Require.jsfunction(Backbone) { ... }のようにする必要はありません。

また、スクリプトの順序に注意している場合はInput、関数内でラップする必要さえありません。そのままにしておきます。

var Input = Backbone.View.extend({  
    events: {
        'mousedown' : 'handleMouseDown',
        'mouseup'   : 'handleMouseUp',
    },
    handleMouseDown: function(){
        console.log('mousedown');
    },
    handleMouseUp: function(){
        console.log('mouseup');
    }
});
var input = new Input;

あなたjs/game.jsとあなたは大丈夫なはずです。

于 2012-09-06T03:16:09.967 に答える
0

in パラメータで使用しているため、パラメータとして Backbone を渡す必要があります。

window.onload = (function(Backbone){

    var Input = Backbone.View.extend({  
            events: {
                'mousedown' : 'handleMouseDown',
                'mouseup'   : 'handleMouseUp',
            },

            handleMouseDown: function(){
                console.log('mousedown');
            },

            handleMouseUp: function(){
                console.log('mouseup');
            }
    }), 

    input = new Input;
    return input;
})(Backbone);
于 2012-09-06T03:11:01.493 に答える