2013-04-03 38 views
0

这里加载脚本是我require.js加载文件:与require.js

require.config({ 
    urlArgs: "noCache=" + (new Date).getTime(), 
    paths: { 
     jquery: "vendor/jquery-1.8.2.min", 
     bootstrap: "vendor/bootstrap.min",  
     underscore: "vendor/underscore-min", 
     backbone: "vendor/backbone-min",  
     template: "libs/template"  
    } 
}); 

require(["jquery", "bootstrap", "underscore", "backbone", "template", "main"], 
function ($, bootstrap, underscore, backbone, template, main) { 

})

而且里面的main.js文件,我有以下代码:

define(["jquery", "underscore", "backbone"], function ($, _, Backbone) { 
    //Backbone and _ are undefined here, why? 
}) 

那么为什么,_“和,, Backbone”在这里没有定义,我做错了什么?
如何在其他文件中正确使用它们?

回答

1

如果你是新的骨干,并要求JS整合来看看下面的教程:

http://backbonetutorials.com/organizing-backbone-using-modules/

您可能正在使用骨干和突出的非AMD版本。使用垫片的配置可以加载任何库,甚至非AMD模块,这里是从我的源文件中的一个垫片配置片段:

requirejs.config({ 
    baseUrl: 'assets/js/', 
    paths : { 
     'jquery': 'lib/jquery/jquery.min', 
     'underscore': 'lib/underscore/underscore-amd-min', 
     'backbone': 'lib/backbone/backbone-amd-min', 
     'bootstrap': 'lib/bootstrap/bootstrap.min', 
    }, 
    shim: { 
     'backbone': { 
      deps: ['jquery', 'underscore'], 
      exports: 'Backbone' 
     }, 
     'underscore': { 
      exports: '_' 
     }, 
     'bootstrap': { 
      deps: ['jquery'] 
     } 
    } 
}); 

另一种解决办法使用这些库的AMD版本你会在这里找到他们: https://github.com/amdjs

下载并指向您的path部分。

+0

是的...我对这两个人很陌生,特别是require.js(我只是想第一次整合它)。感谢这些伟大的文章,但您能否更具体地了解需要改变的地方? – hjuster

+0

当然,你必须下载amd支持的下划线版本(https://github.com/amdjs/backbone)和骨干网(https://github.com/amdjs/backbone),并且包含那些库而不是当前的库。 –

+0

@hjuster我只是看着我的源文件,并意识到我也在使用这些库的非AMD版本。这可以通过shim配置来实现。我编辑了我的答案,并包含了一个shim配置的例子。 –