Ste*_*ing 16 javascript requirejs
我想将多个模块合并到一个文件中,但我找不到关于如何操作的官方文档.现在我使用下面的方法,它的工作原理,但我想知道以下内容:
的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>
Run Code Online (Sandbox Code Playgroud)
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');
});
Run Code Online (Sandbox Code Playgroud)
Ale*_*ode 10
这已经很久了,但我刚碰到它.当然你可以在同一个文件中有多个定义,是的,这是有道理的.
您唯一需要做的就是使用命名定义.
define('module1', ['dependency1', 'dependency2'], function (d1, d2) {
// your code here
}
Run Code Online (Sandbox Code Playgroud)
认为有时您不需要动态加载资源,实际上可能需要在开始时加载它们,在打包时创建单个连接/缩小的js文件是最佳解决方案.
因此,您不会利用"延迟加载",但您仍然可以使用RequireJS以模块化方式设计应用程序.
Pru*_*rum 10
上安是对的.在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';
})
Run Code Online (Sandbox Code Playgroud)
然后在我的main.js文件中,我做了类似这样的事情:
requirejs.config({
baseUrl : 'modules/',
bundles: {
'modules': ['module_one', 'module_two']
}
})
require(['module_one', 'module_two'], function(moduleOne, moduleTwo){
alert(moduleOne);
alert(moduleTwo);
})
Run Code Online (Sandbox Code Playgroud)
它的工作方式与我想的一样.
那是对的吗 ?
不。磁盘上的每个文件应该只有一个模块定义。
RequireJS 如何检查模块是否已加载?使用模块名称或文件名?
使用文件名。
在某些情况下会多次初始化吗?
优化工具可以将模块分组为优化包。
http://requirejs.org/docs/optimization.html
这里给出了 Hello World 模块的示例。
http://mydons.com/requirejs-hello-world/