【问题标题】:Dojo build issues if require is used conditionally to load another module in one layer which requires modules already included in the first layer如果有条件地使用 require 在一个层中加载另一个模块,该模块需要第一层中已经包含的模块,则 Dojo 构建问题
【发布时间】:2015-01-28 14:20:45
【问题描述】:
我有一个场景,我试图通过将所有内容添加到单个层来将 dojo 和我的应用程序构建到一个文件中。
但是,在 dojo 的 gfx/render 中,渲染器是动态确定的,并且使用 require 语句来获取该渲染器的模块。
因此,在构建之后,我的最终 js 文件中没有这些渲染模块。
当我加载最终的 js 文件时,它会尝试在其实际位置找到渲染。
如果我将这些文件原样添加到新层中,则会导致新问题。加载的渲染器模块在其依赖列表中定义了其他 dojo 模块,其中大部分已经包含在之前的最终 js 文件(第 1 层)中。
因此这会导致较大的层。
有什么办法可以解决这个问题?
【问题讨论】:
标签:
javascript
dojo
dojo-build
【解决方案1】:
您还需要在构建中包含动态需要的模块...为此,您可以创建一个加载器模块(例如 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 作为依赖项添加到您的核心模块之一。