1

Require.jsのshimconfigを使用してBackbone.io、Backbone、socket.ioをロードするにはどうすればよいですか?

他のすべてが正常にロードされているようです。Backbone.io.connect()を実行しようとすると、「バックボーンが定義されていません」というメッセージが表示されます。Backbone.ioは、socket.ioサーバーが作成する/socket.ioディレクトリからのsocket.ioと同じ方法で提供されます。

requirejs.config({
  baseUrl: 'javascripts/lib',
  paths: {
    jquery: 'jquery.min',
    bootstrap: 'bootstrap.min'
  },
  shim : {
    'underscore': {
      exports: '_'
    },
    'backbone': {
      deps: ["underscore", "jquery"],
      exports: 'Backbone'
    },
    'bootstrap': {
      deps: ["jquery"]
    }
  }
})

requirejs(['jquery',
           'underscore',
           'backbone',
           'bootstrap',
           '../socket.io/socket.io.js',
           '../socket.io/backbone.io.js'
           ], function($, 
                       _,
                       Backbone,
                       bootstrap){

    Backbone.io.connect();
}

小さな更新:

バックボーンはメインのrequirejs関数で適切に定義されているようですが、backbone.ioを初期化する前にバックボーンを定義する必要があるだけです。Backboneオブジェクトを初期化してからbackbone.ioライブラリを初期化して、それを実行できるようにするにはどうすればよいですか?

4

2 に答える 2

3

パスにバックボーンを含めてみてください

paths: {
    jquery: 'jquery.min',
    bootstrap: 'bootstrap.min',
    underscore: '<name of underscore file>',
    backbone: '<name of backbone file>'
},

私はそれがそれをするべきだと思います。ファイル名に.jsを含めないように注意してください。また、backbone.ioがバックボーンに依存している場合は、shimの下に依存関係を追加する必要があります。

shim : {
    'underscore': {
      exports: '_'
    },
    'backbone': {
      deps: ["underscore", "jquery"],
      exports: 'Backbone'
    },
    'bootstrap': {
      deps: ["jquery"]
    },
    'backbone.io': {
      deps: ["backbone"]
  }
}
于 2013-02-12T05:07:32.180 に答える
2

これが私のためにどのように機能することになったのかです:

ランドランドに感謝します、あなたの答えは最も役に立ちました。

requirejs.config({
  baseUrl: 'javascripts/lib',
  paths: {
    jquery: 'jquery.min',
    bootstrap: 'bootstrap.min',
    backbone: 'backbone',
    underscore: 'underscore',
    socketio: '../../socket.io/socket.io',
    backboneio: '../../socket.io/backbone.io'
  },
  shim : {
    'underscore': {
      exports: '_'
    },
    'backbone': {
      deps: ["underscore", "jquery"],
      exports: 'Backbone'
    },
    'bootstrap': {
      deps: ["jquery"],
      exports: 'bootstrap'
    },
    'backboneio': {
      deps: ["backbone", "socketio"]
    }
  }
})

requirejs(['jquery',
           'underscore',
           'backbone',
           'bootstrap',
           'socketio',
           'backboneio'
           ], function($, 
                       _,
                       Backbone,
                       bootstrap,
                       titlealert,
                       waitForImages){
}
于 2013-02-12T23:27:42.857 に答える