2

我一直在寻找一种方法来自动从其他层中排除公共层中包含的模块,以减少我们构建中重复代码的数量。在进行谷歌搜索时,我遇到了来自https://dojotoolkit.org/reference-guide/1.8/build/profiles.html?highlight=layerdependencies的“layerDependencies” 。在此之前,我一直在查看 writeAMD 文档,在此处输入链接描述。这两个页面似乎都是针对 Dojo 1.8 的,但包含的似乎是层定义中可以包含的内容的互斥定义(例如,“copyright”与“copyrightFile”)。

我的直觉告诉我其中一个文档已经过时,应该被弃用,可悲的是,我的直觉也告诉我它可能是以前的链接。但是,当与 writeAMD 的语法混合时,layerDependencies 在我的构建中起作用。

这两个文件都有效吗?

4

1 回答 1

2

您是对的,layerDependencies是旧(1.7 之前)构建系统的一部分。当前构建代码layerDependencies移至exclude.

util\build\v1xProfiles.js

layer.exclude = transformLayerDependencies(layer.layerDependencies, layer.name);

这是我在创建构建时使用的教程。

http://dojotoolkit.org/documentation/tutorials/1.8/build/


编辑 - 澄清我对 exclude 属性的使用

exclude 是要排除的模块数组,而不是层。所以在配置文件中,我定义了一个包含一组模块的变量,

var profile = (function(){

    var coreRequires = [        
        "dojo/_base/declare",
        "dojo/_base/fx",
        "dojo/_base/lang",
        "dojo/currency",
        "dojo/fx",
        "dojo/number",
        "dojo/on",
        "dojo/query"
    ];

    ...

然后我在定义层的包含和排除时使用这个变量。

    layers: {
        "myApp/core": {
            include:    coreRequires
        },

        "myApp/appLayer1": {
            include:    [
                "myApp/CustomWidget1",
                "myApp/CustomWidget2",
                ...
            ],
            exclude: coreRequires
        }
    }
于 2013-03-19T12:53:13.637 回答