我正在读一点关于requireJS并试图理解它。剂量requirejs需要所有的JS文件来支持AMD
我想知道的:
- 我应该结构特殊的方式或模式类似模块的模式我的档案?
- 使用库时,这些文件应该支持AMD吗?
非常感谢您的帮助。
我正在读一点关于requireJS并试图理解它。剂量requirejs需要所有的JS文件来支持AMD
我想知道的:
非常感谢您的帮助。
你可以用任何你认为合适的方式来构造文件。 RequireJS loads the script file在加载require.js的脚本标记的data-main
属性中引用。从那个文件你可以自由地要求你想要的任何模块。
库不需要需要来支持AMD。您可以使用shim config加载将值导出到全局范围的模块(即正常的javascript文件)。
晴我设置了一个require.js项目有如下的结构:
和初始的引导。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库。
所以只是为了清楚。如果我想使用任何不支持AMD的库,或者不实现模块模式,我只需要使用[shim config](http://requirejs.org/docs/api.html#config-shim)能够使用它们? –
大部分是。非AMD脚本将被附加到全球范围,因为它们没有RequireJS。这意味着它们可以与AMD模块和其他库一起工作,但是由于全局(窗口)对象被污染,所以您不能获得模块模式的“纯度”。我使用它,它的工作原理。 – jevakallio
一个异常将是一个不导出单个对象的库。如果您使用shim exports回调函数将它们包装到一个导出对象,您仍然可以在AMD上使用它们。虽然它很笨重,但图书馆以这种方式工作是非常罕见的。 – jevakallio