如果有条件地使用require来在一个层中加载另一个模块(需要已包含在第一层中的模块),则Dojo构建问题

时间:2015-01-28 14:20:45

标签: javascript dojo dojo-build

我有一个场景,我试图通过将所有内容添加到一个单独的层来将dojo和我的应用程序构建到一个文件中。 但是,在dojo的gfx / render中,动态确定渲染器,并使用require语句来获取该渲染器的模块。 因此,在构建之后,我不会在最终的js文件中使用这些渲染模块。

当我加载最终的js文件时,它会尝试在实际位置找到渲染。

如果我将这些文件添加到新图层中,则会导致出现新问题。加载的渲染器模块在其依赖项列表中定义了其他dojo模块,其中大多数已经包含在先前的最终js文件(第1层)中。

因此,这会导致大的层次。

可以使用什么解决方案来解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要在构建中包含动态需要的模块...为此,您可以创建一个加载器模块(例如LoaderModule)并在其中需要这些依赖项,然后将该模块作为依赖项添加到其中一个您图层中的模块。不久:

LoaderModule.js:

define([
    'dojo/_base/declare',

    /* Add all dynamically required modules here to include in production build */
    'dojox/gfx/renderer'

], function(declare) {
    return declare(null, {});
});

然后将LoaderModule添加为您的某个核心模块的依赖项。