2013-01-03 30 views

回答

1
  1. 你可以用任何你认为合适的方式来构造文件。 RequireJS loads the script file在加载require.js的脚本标记的data-main属性中引用。从那个文件你可以自由地要求你想要的任何模块。

  2. 库不需要需要来支持AMD。您可以使用shim config加载将值导出到全局范围的模块(即正常的javascript文件)。

+0

所以只是为了清楚。如果我想使用任何不支持AMD的库,或者不实现模块模式,我只需要使用[shim config](http://requirejs.org/docs/api.html#config-shim)能够使用它们? –

+0

大部分是。非AMD脚本将被附加到全球范围,因为它们没有RequireJS。这意味着它们可以与AMD模块和其他库一起工作,但是由于全局(窗口)对象被污染,所以您不能获得模块模式的“纯度”。我使用它,它的工作原理。 – jevakallio

+0

一个异常将是一个不导出单个对象的库。如果您使用shim exports回调函数将它们包装到一个导出对象,您仍然可以在AMD上使用它们。虽然它很笨重,但图书馆以这种方式工作是非常罕见的。 – jevakallio

0

晴我设置了一个require.js项目有如下的结构:

    • JS
      • modulesType1
        • MOD1
        • MOD2
      • modulesType2
        • MOD1
        • MOD2
      • app.js
      • bootstrap.js
    • LIB
      • 要求
        • require.js
      • LIB1
        • lib1.js
    • CSS/IMG /谐音/ ...
    • 的index.html

和初始的引导。JS一个有require.config对象和初始require

/*global define, require */ 

require.config({ 
    baseUrl: 'js', 
    paths: { 
     lib1: '../lib/lib1/lib1' 
    }, 
    shim: { 
     lib1: ['something'] 
    } 
}); 
require(['lib1', 'app'], function (lib1, app) { 
    app.doSth(); 
}); 

在HTML页面中,你只需要一个script标签与data-main属性:

<body> 
    ... 
    <script type="text/javascript" src="lib/require/require.js" data-main="js/bootstrap"></script> 
</body> 

编辑:模块没有要符合AMD的要求,但如果它们在您自己的控制之下,最好让它们符合AMD标准。您可以使用require.config中的shim属性加载第三方非AMD库。