Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/debugging/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Build Dojo构建到单个文件_Build_Dojo - Fatal编程技术网

Build Dojo构建到单个文件

Build Dojo构建到单个文件,build,dojo,Build,Dojo,我想将我的Dojo JavaScript代码构建到一个单个JavaScript文件中,我已经仔细地将这些代码构建到包中。我对怎么做有点困惑 现在我有这个: var profile = { ... layers: { 'app': { include: [ 'dojo/module1', 'dojo/module2', ...,

我想将我的Dojo JavaScript代码构建到一个单个JavaScript文件中,我已经仔细地将这些代码构建到包中。我对怎么做有点困惑

现在我有这个:

var profile = {
    ...
    layers: {
        'app': {
            include: [
                'dojo/module1',
                'dojo/module2',
                ...,
                'dojo/moduleN',
                'package2/module1',
                'package2/module2',
                ...,
                'package2/moduleN'
            ]
        }
    }
    ...
};
我真的必须手动将所有模块添加到应用层吗?我不能说“全部”,或者更确切地说,“全部引用”吗?如果我不使用dojo/something模块,我不想包含它。另外,在我的发行版文件夹中,这就是我想要的全部——一个文件


那么,这能实现吗?Clean Dojo仅将引用的模块自动构建到单个JavaScript文件中(当然是缩小和模糊的文件?

请查看以下示例:

还可以创建自定义的
dojo.js构建;这在使用AMD时尤其重要,因为默认情况下(为了向后兼容),
dojo/main
模块由构建系统自动添加到
dojo.js
,这会因为加载代码可能实际不使用的模块而浪费空间。为了创建
dojo.js
的自定义构建,只需将其定义为一个单独的层,将customBase和boot都设置为true:

   var profile = {
        layers: {
            "dojo/dojo": {
                include: [ "dojo/dojo", "app/main" ],
                customBase: true,
                boot: true
            }
        }
    };
通过包含应用程序(或模块)的根,可以在单个层中包含整个“应用程序”。请注意,如果该应用程序中的模块不是该应用程序明确需要的,则必须手动包含该模块。请参见上述教程中“层”部分的第二个示例,以了解该示例的说明

如果要更改或自定义项目的布局,还可以定义要包含在图层中的包:

packages: [
    {name:'dojo', location:'other/dojotoolkit/location/dojo'},
    /* ... */
],
layers: {
    'dojo/dojo': { include: ['dojo/dojo'] },
    /* ... */
}

如果添加的模块已经依赖于其他模块,则不必指定所有模块。例如,如果将“app/MainApplication”包含到层中,则构建器将包含app/MainApplication依赖的所有模块。如果MainApplication.js涉及项目中的所有内容,那么所有内容都将包括在内。
在构建层的过程中,dojo解析每个模块中的require()和define()调用。然后构建依赖关系树。Nls资源也包括在内。 在代码中,应将层命名为现有包中的文件。在我的构建中,当我用一个单词命名一个层时,它会导致错误。你应该编码

var profile =
   layers: {
     'existingPackage/fileName': {
         ...
      }
   }
如果您想要有一个文件,那么必须在层中包含“dojo/dojo”,并指定customBase和引导标志

Dojo总是在构建层之前构建每个包。您的发布目录中始终有dojo和dijit文件夹,其中包含dojo文件的简化版本。

只需复制所需的图层文件并删除其他所有内容。

有一个重要的时刻-您应该将
releaseDir
的全部内容复制到服务器上,因为一些*.js文件没有包含在您的构建中(例如i18n)。