dojo.require无法以递归顺序加载

时间:2015-06-03 22:34:59

标签: javascript dojo cross-domain

我试图在线移动我的一些dojo 1.7代码库。我在服务器上启用了CORS,本地/在线文件加载了dojo.require

虽然这适用于本地文件,但http文件无法以递归顺序加载。例如,

dojo.registermodulepath("my.path", "http://my.path");
dojo.require(my.path.module1);
dojo.require(my.path.module2);

现在,假设加载module1文件并且具有自己的子依赖项,dojo.require应该首先加载这些子依赖项;但我观察到,对于在线文件,它会直接加载module2并中断订单。

因此,该应用程序无法正常运行。怎么样?

2 个答案:

答案 0 :(得分:0)

一般来说,依赖于同一水平&#34; (例如,同一模块中的两个dojo.require次呼叫)预计不会依赖于顺序。如果module2确实依赖于module1已加载,则module2本身应包含对require的{​​{1}}调用,这将准确表达递归依赖关系。< / p>

我建议不要假设module1同步操作 - 在此假设下运行将打破您尝试进行跨域构建的时刻,或更新以使用{{1}的正确AMD模式中的加载器}。

同时,如果通过&#34; local&#34;您的意思是文件系统访问,建议高度使用实际的Web服务器来运行Web应用程序。浏览器通常对file:// URL进行更严格的操作,例如阻止XHR。

答案 1 :(得分:-1)

你可以设置

  <script>
dojoConfig= {
     async: false
};
</script>

或者在AMD风格中,您只能在module1加载后加载module2