requirejs是否需要所有JS文件来支持AMD
我很少读关于它的书,也试着去理解它 我想知道的是:requirejs是否需要所有JS文件来支持AMD,requirejs,amd,Requirejs,Amd,我很少读关于它的书,也试着去理解它 我想知道的是: 我应该像模块模式那样以特定的方式或模式构建我的文件吗 使用库时,这些文件是否支持AMD 非常感谢你的帮助 您可以按自己认为合适的方式组织文件。在加载require.js的脚本标记的data main属性中引用的RequireJS。从该文件中,您可以自由地要求任何您想要的模块 库不需要支持AMD。您可以使用加载将值导出到全局范围的模块(即普通javascript文件) 我主要是建立一个require.js项目,其结构如下: 根 js 模块类
data main
属性中引用的RequireJS。从该文件中,您可以自由地要求任何您想要的模块我主要是建立一个require.js项目,其结构如下:
- 根
- js
- 模块类型1
- mod1
- mod2
- 模块类型2
- mod1
- mod2
- app.js
- bootstrap.js
- 模块类型1
- 解放党
- 要求
- require.js
- lib1
- lib1.js
- 要求
- css/img/partials/
- 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页面中,您只需要一个带有数据主属性的脚本标记:
<body>
...
<script type="text/javascript" src="lib/require/require.js" data-main="js/bootstrap"></script>
</body>
...
编辑:模块不必与AMD兼容,但如果它们由您自己控制,最好使它们与AMD兼容。您可以使用require.config
中的属性使第三方非AMD库可加载 所以我想说清楚。例如,如果我想使用任何不支持AMD或不实现模块模式的库,我只需要使用它们就能使用它们??大部分是的。非AMD脚本将被附加到全局范围,就像它们在没有RequireJS的情况下一样。这意味着它们将与AMD模块和其他库一起工作,但是由于全局(窗口)对象被污染,您无法获得模块模式的“纯度”。我使用它,它可以工作。一个例外是库不能只导出一个对象。如果使用shim exports回调函数将它们包装到一个导出对象中,则仍然可以将它们与AMD一起使用。虽然很笨重,但图书馆很少有这样的工作方式。最后一件事。shim exports回调函数的用途是什么?解析模块时会调用回调函数(在shim配置中称为“init”)。无论您从该函数返回什么,都是模块在导入时将返回的内容。请参阅我在答案中链接的文档。我正在用手机回复,所以现在链接起来不太容易:P