使用 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>