使用 Dojo 需要一组模块的正确方法
Correct way to require an array of modules in order using Dojo
我正在使用 dojo 来模块化我的应用程序。
有一个 JSON 配置文件指定要加载的模块,在一个数组中
我不确定如何将它应用于 Dojo 的 require 库,因为它是异步的并且语法有点奇怪。
有办法批量处理吗?或者我必须为每个文件调用一个新的声明。
有没有办法对加载的模块强制排序?我真的需要订单得到尊重,或者至少恢复并稍后订购
这是我开始使用的示例,但我觉得不合适(是的,我使用的是 AMD 版本):
也许有办法强制它同步加载?但我想不推荐这样做
files = ["fileone","filetwo","filethree"] //this would be loaded from a config file
files.forEach((item,i) => {
dojo.require(item, function(module){
console.log(module)
}
})
你可以这样做(外部 require
可以替换为你模块中的 define
):
require([
"require"
/*, "dojo/text!path/to/config.json" */
], function(require /*,config*/){
var files = ["dojo/dom", "dojo/_base/declare"]; //replace this with array from config
//(propably needs JSON.parse(config))
require(files, function(){
console.log("All in one require");
console.log(arguments);
});
files.forEach(function(file, i){
require([file], function(module){
console.log("ForEach: module nr " + i);
console.log(module);
});
});
});
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
我正在使用 dojo 来模块化我的应用程序。
有一个 JSON 配置文件指定要加载的模块,在一个数组中
我不确定如何将它应用于 Dojo 的 require 库,因为它是异步的并且语法有点奇怪。
有办法批量处理吗?或者我必须为每个文件调用一个新的声明。
有没有办法对加载的模块强制排序?我真的需要订单得到尊重,或者至少恢复并稍后订购
这是我开始使用的示例,但我觉得不合适(是的,我使用的是 AMD 版本):
也许有办法强制它同步加载?但我想不推荐这样做
files = ["fileone","filetwo","filethree"] //this would be loaded from a config file
files.forEach((item,i) => {
dojo.require(item, function(module){
console.log(module)
}
})
你可以这样做(外部 require
可以替换为你模块中的 define
):
require([
"require"
/*, "dojo/text!path/to/config.json" */
], function(require /*,config*/){
var files = ["dojo/dom", "dojo/_base/declare"]; //replace this with array from config
//(propably needs JSON.parse(config))
require(files, function(){
console.log("All in one require");
console.log(arguments);
});
files.forEach(function(file, i){
require([file], function(module){
console.log("ForEach: module nr " + i);
console.log(module);
});
});
});
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>