dojo.require 未按递归顺序加载
dojo.require not loading in recursive order
我正在尝试将我的一些 dojo 1.7 代码库移到网上。我在服务器上启用了 CORS,local/online 文件加载 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>
或者在 AMD 风格中,您只能在模块 1 加载后加载模块 2
一般来说,相同 "level" 的依赖项(例如同一模块中的两个 dojo.require
调用)预计不会依赖于顺序。如果 module2
确实依赖于 module1
已被加载,那么 module2
本身应该包含对 module1
的 require
调用,这将准确地表达递归依赖。
我建议不要假设 dojo.require
同步运行 - 在该假设下运行会破坏您尝试进行跨域构建或更新以在适当的 AMD 模式下使用 async: true
.
同时,如果 "local" 您指的是文件系统访问,强烈 建议使用实际的 Web 服务器来 运行 Web 应用程序。浏览器通常对 file:// URL 的操作更加严格,例如阻止 XHR。
我正在尝试将我的一些 dojo 1.7 代码库移到网上。我在服务器上启用了 CORS,local/online 文件加载 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>
或者在 AMD 风格中,您只能在模块 1 加载后加载模块 2
一般来说,相同 "level" 的依赖项(例如同一模块中的两个 dojo.require
调用)预计不会依赖于顺序。如果 module2
确实依赖于 module1
已被加载,那么 module2
本身应该包含对 module1
的 require
调用,这将准确地表达递归依赖。
我建议不要假设 dojo.require
同步运行 - 在该假设下运行会破坏您尝试进行跨域构建或更新以在适当的 AMD 模式下使用 async: true
.
同时,如果 "local" 您指的是文件系统访问,强烈 建议使用实际的 Web 服务器来 运行 Web 应用程序。浏览器通常对 file:// URL 的操作更加严格,例如阻止 XHR。