use*_*006 3 dojo amd dijit.form requirejs
我正在使用AMD的编码方式,当我进行异步时:false我没有看到执行行为的任何差异,即使异步为真或假我没有看到任何区别.
请查看下面的代码段:
<html>
<script type="text/javascript" src="../../dojoroot/dojo/dojo.js" data-dojo-config="async:true, parseOnLoad:true"></script>
<script type="text/javascript">
require(["dojo/domReady!"], function(){
alert("I am inside DOM ready");
});
require(["dojo/ready"], function(ready){
ready(function(){
alert("I am inside ready");
});
});
</script>
<body>
some div's here
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
输出:在这两种情况下,我首先看到"我在DOM准备就绪",然后"我准备就绪"警报接下来.
如果我添加async:true和async:false,请解释一下有什么区别?
谢谢.
小智 6
要回答你的问题,如果async设置为truthy值(true,1,等),dojo/domReady以及dojo/ready何时会被加载require时调用.如果async未设置,则在加载时立即dojo.js加载这些模块.所以如何没有影响你的代码执行,它只是当这些模块成为可用.
这是来自Dojo AMD描述的片段:
为了向后兼容,默认情况下加载器以同步模式启动,它会自动加载Dojo基本API:
Run Code Online (Sandbox Code Playgroud)<script src="path/to/dojo/dojo.js"></script> <script> // the dojo base API is available here </script>要将加载程序置于AMD模式,请将async配置变量设置为truthy:
Run Code Online (Sandbox Code Playgroud)<script data-dojo-config="async: 1" src="path/to/dojo/dojo.js"></script> <script> // ATTENTION: nothing but the AMD API is available here </script>
请注意,您只能在加载dojo.js之前设置async标志,并且在AMD模式下,Dojo Base和任何其他库都不会自动加载 - 完全由应用程序决定要加载哪些模块/库.