Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript dojo.require不需要以递归顺序加载_Javascript_Dojo_Cross Domain - Fatal编程技术网

Javascript dojo.require不需要以递归顺序加载

Javascript dojo.require不需要以递归顺序加载,javascript,dojo,cross-domain,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 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
,打破了顺序

因此,该应用程序将无法运行。怎么会这样?

您可以设置

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

dojoConfig={
异步:false
};

或者,在AMD样式中,您只能在module1加载之后加载module2。一般来说,相同“级别”(例如,同一模块中的两个
dojo.require
调用)的依赖项不需要依赖于顺序。如果
module2
确实依赖于已加载的
module1
,则
module2
本身应包含
require
调用
module1
,这将准确地表示递归依赖关系

我建议不要假设dojo.require是同步运行的,在这种假设下运行会破坏您尝试跨域构建或更新加载程序以正确AMD模式使用
async:true
的时刻


同时,如果“本地”是指文件系统访问,强烈建议使用实际的Web服务器来运行Web应用程序。浏览器通常对file://URL的操作更加严格,例如阻止XHR。

现在我想起来了,我的“本地文件”实际上也是通过HTTP发送的。服务器是本地的。好吧,我不知道该怎么读。如果你真的在谈论来自2个HTTP服务器的模块,我真的鼓励你考虑将代码更新为AMD格式,并在加载程序中打开
async:true
——此时你也不需要CORS,因为加载程序通过脚本注入而不是sync XHR+eval进行操作。这些和教程值得一读。问题解决了。事实证明,我所需要做的就是直接
dojo.require
这些文件,而不是递归地。谢谢你的解释。