我想将多个模块合并到一个文件中,但我找不到关于如何操作的官方文档。现在我使用下面的方法,它有效,但我想知道以下内容:
的index.html
<script src="require.js"></script>
<script>
requirejs.config({
paths: {
'a': 'test',
'b': 'test'
}
});
require(['a', 'b'], function () {
console.log('a & b loaded');
});
</script>
test.js
console.log('loading test.js');
// I have some init here, like "Avoid `console` errors in IE"
define('a', function () {
console.log('a module');
});
define('b', function () {
console.log('b module');
});
答案 0 :(得分:10)
这已经过时了,但我刚碰到它。 当然,你可以在同一个文件中有多个定义,是的,这是有道理的。
您唯一需要做的就是使用命名定义。
define('module1', ['dependency1', 'dependency2'], function (d1, d2) {
// your code here
}
认为有时候您不需要动态加载资源,实际上可能需要在开头加载所有资源,在打包时创建单个连接/缩小的js文件是最佳解决方案。 / p>
所以你不能利用&#34;延迟加载&#34;但您仍然可以使用RequireJS以模块化方式设计您的应用程序。
答案 1 :(得分:9)
尚安是对的。在http://requirejs.org/docs/api.html#define中,有一部分说:
磁盘上每个文件只应该有一个模块定义。
但是如果你想要做到这一点我发现了类似的东西:它来自官方文档: http://requirejs.org/docs/api.html#config-bundles
它表示您可以通过bundles
属性定义在哪个文件中找到哪些模块。例如:我有文件叫
带有此类内容的 modules.js :
define('module_one', function(){
return 'Hello. I am module one';
})
define('module_two', function(){
return 'Hello. I am module two';
})
然后在我的 main.js 文件中,我执行以下操作:
requirejs.config({
baseUrl : 'modules/',
bundles: {
'modules': ['module_one', 'module_two']
}
})
require(['module_one', 'module_two'], function(moduleOne, moduleTwo){
alert(moduleOne);
alert(moduleTwo);
})
它的工作方式与我想的一样。
答案 2 :(得分:0)
是正确的吗?
NO。磁盘上每个文件应该只有一个模块定义。
RequireJS如何检查加载的模块?使用模块名称或文件名?
使用文件名。
在某些情况下,会多次启动?
优化工具可以将模块分组为优化的捆绑包。
http://requirejs.org/docs/optimization.html
此处给出了Hello World模块的示例。