如何使用dojo以定义的顺序加载非AMD依赖项?

时间:2014-10-23 15:16:03

标签: javascript dojo amd legacy-code

我尝试使用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; }); 中的顺序。< /强>

导致(有时)错误,因为实际的库文件需要首先加载它自己的依赖项。

1 个答案:

答案 0 :(得分:2)

Dojo有一个完美的方法来帮助自己:loader plugins

您可以编写自己的顺序加载插件,以确保您的加载顺序。

(出于公司拥有代码的版权原因,我不能在此处发布实现,但是使用dojo的DeferredPromise将一个加载请求链接到另一个后很容易,内部使用{{1进行实际加载)。

假设您的dojo加载器插件具有模块标识require()。 然后,您的myPackage/sequentialLoading将如下所示。

main.js