2013-02-12 62 views
1

如何使用Require.js的shim配置加载Backbone.io,Backbone和socket.io?Backbone.io,Backbone和require.js

似乎所有的东西都加载得很好,只是当我试图运行Backbone.io.connect()我得到“Backbone is not defined”。 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库,以便它可以做到这一点?

回答

3

尝试,包括在你的路径

​​

骨干,我认为应该这样做。切记不要在文件名中包含.js。 另外,如果backbone.io依赖于主干,则可能需要在shim下添加依赖关系。

shim : { 
    'underscore': { 
     exports: '_' 
    }, 
    'backbone': { 
     deps: ["underscore", "jquery"], 
     exports: 'Backbone' 
    }, 
    'bootstrap': { 
     deps: ["jquery"] 
    }, 
    'backbone.io': { 
     deps: ["backbone"] 
    } 
} 
+0

另外,'下划线:'underscore.min''我想... – 2013-02-12 06:40:17

+0

不幸的是,这并没有帮助。骨干和下划线库在我开发时没有缩小,所以它们只是backbone.js和underscore.js。 – 2013-02-12 13:35:55

+0

如果它没有被缩小,在路径中只需放置主干:'没有.js的骨干文件的名称',并且是的,我相信Paul是正确的,您需要将下划线:'没有.js的下划线文件的名称'放入路径也是如此。我已经更新了我的答案以反映这一点。 – landland 2013-02-12 15:35:02

2

下面是它是如何结束的工作对我来说:

感谢landland,你的回答帮助最多。

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