我尝试使用dojo加载非AMD库,我选择了一个单独的文件夹作为新的(伪)AMD包,并将该库的文件与{{1}一起放在该文件夹中} file,在请求包时由dojo加载器按惯例加载。在这个main.js文件中,我只是将我的库文件的名称放在main.js
调用的依赖项列表中。
define()
问题在于:依赖项的加载顺序取决于网络延迟,不保证它们出现在define([
"jquery",
"./lib/jquery-ui/jquery-ui.min",
"./the.actual.library.that.uses.the.others",
], function () {
return window.someGlobalSetByTheLibrary;
});
中的顺序。< /强>
导致(有时)错误,因为实际的库文件需要首先加载它自己的依赖项。
答案 0 :(得分:2)
Dojo有一个完美的方法来帮助自己:loader plugins。
您可以编写自己的顺序加载插件,以确保您的加载顺序。
(出于公司拥有代码的版权原因,我不能在此处发布实现,但是使用dojo的Deferred
和Promise
将一个加载请求链接到另一个后很容易,内部使用{{1进行实际加载)。
假设您的dojo加载器插件具有模块标识require()
。
然后,您的myPackage/sequentialLoading
将如下所示。
main.js