Backbone.js Backbone.io、Backbone和require.js

Backbone.js Backbone.io、Backbone和require.js,backbone.js,socket.io,requirejs,Backbone.js,Socket.io,Requirejs,如何使用Require.js的shim config加载Backbone.io、Backbone和socket.io 似乎其他一切都加载得很好,只是当我尝试运行Backbone.io.connect()时,我得到了“Backbone未定义”。Backbone.io的服务方式与socket.io服务器创建的/socket.io目录中的socket.io相同 requirejs.config({ baseUrl: 'javascripts/lib', paths: { jquery:

如何使用Require.js的shim config加载Backbone.io、Backbone和socket.io

似乎其他一切都加载得很好,只是当我尝试运行Backbone.io.connect()时,我得到了“Backbone未定义”。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.io库,使其能够完成任务?

尝试在路径中包含主干

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

尝试在您的路径中包含主干

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

以下是它最终对我起作用的方式:

谢谢房东,你的回答帮助最大

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){
}

以下是它最终对我起作用的方式:

谢谢房东,你的回答帮助最大

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){
}

不幸的是,这没有帮助。主干和下划线库在我开发时没有缩小,所以它们只是backbone.js和underline.js。如果没有缩小,在路径中只放backbone:'name of backbone file without.js',是的,我相信Paul是正确的,您还需要在路径中放下划线:'name of underline file without.js'。我更新了我的答案以反映这一点。不幸的是,这没有帮助。主干和下划线库在我开发时没有缩小,所以它们只是backbone.js和underline.js。如果没有缩小,在路径中只放backbone:'name of backbone file without.js',是的,我相信Paul是正确的,您还需要在路径中放下划线:'name of underline file without.js'。我更新了我的答案以反映这一点。