gpt4 book ai didi

javascript - dojo AMD 加载顺序是什么?

转载 作者:行者123 更新时间:2023-12-03 12:04:17 25 4
gpt4 key购买 nike

我尝试寻找 dojo AMD 加载其模块的顺序,正如我在其他问题中看到的那样,模块放置在 require[] block 中的顺序很重要。

require(["dojo/dom",
"dijit/Dialog",
"dijit/form/Form",
"dijit/form/TextBox",
"dijit/form/ValidationTextBox",
"dijit/form/Textarea",
"dijit/form/Button",
"dojox/validate/web",
"dojo/request",
"dojo/domReady!"],

将是 require block 的示例...

最佳答案

嗯...没有真正的加载顺序(这就是 AMD 中的异步)。 dojo/domReady! 模块也不是最后加载的,模块本身延迟了 AMD 回调的执行。

有人会把dojo/domReady!放在最后的唯一原因是因为返回的对象没有用处。但是,不管用还是不用,如果你需要一个特定的模块放在它后面,那么你仍然需要添加一个额外的参数,例如:

require(["dojo/dom", "dojo/domReady!", "dojo/aspect"], function(dom, garbage, aspect) {

});

上面的代码可以工作,并且即使你打乱模块的顺序也可以继续工作,这里唯一的问题是,因为我们需要 aspect 模块,所以我们需要添加第二个参数domReady 模块。

因此,常见的做法是将所有不需要的模块(至少返回的对象)放在序列的末尾,例如:

require(["dojo/dom", "dojo/aspect", "dojo/domReady!"], function(dom, aspect, garbage) {

});

因为 JavaScript 中的参数是可选的,所以我们可以保留不需要的参数(如果它们位于末尾),因此上面的代码与以下内容相同:

require(["dojo/dom", "dojo/aspect", "dojo/domReady!"], function(dom, aspect) {

});

这就是为什么它经常被添加为最后一个参数。尽管还有其他模块通常放置在末尾,例如:

  • 所有dojo/NodeList-* 模块:这些模块向NodeList 模块添加额外的功能。但是,它们是直接应用的,并且这些模块的返回对象没有用处。
  • dojo/parser:当您将 Dojo 配置为自动解析所有 HTML(使用 parseOnLoad)时,您不一定需要对解析器模块的引用。但是,您必须添加它才能使其正常工作。
  • 所有小部件:如果您使用声明性标记,则不需要模块本身的实例,但是,您必须加载它才能使其工作。

关于javascript - dojo AMD 加载顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25253703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com