我一直在寻找一种方法来自动从其他图层中排除公共图层中包含的模块,以减少构建中重复代码的数量。在进行谷歌搜索时,我遇到了来自https://dojotoolkit.org/reference-guide/1.8/build/profiles.html?highlight=layerdependencies的“layerDependencies”。在此之前,我一直在enter link description here查看writeAMD文档。这两个页面似乎都适用于Dojo 1.8,但它包含了对图层定义中可能存在的相互排斥的定义(例如,'copyright'与'copyrightFile')。
我的直觉告诉我其中一个文档已经过时,应该被弃用,遗憾的是,我的直觉也告诉我它可能是以前的链接。但是,当使用writeAMD的语法混合时,layerDependencies在我的构建中起作用。
这两个文件都有效吗?
答案 0 :(得分:2)
你是对的,layerDependencies
是旧的(1.7之前版本)构建系统的一部分。当前构建代码将layerDependencies
移至exclude
。
<强> util的\建立\ v1xProfiles.js 强>
layer.exclude = transformLayerDependencies(layer.layerDependencies, layer.name);
这是我在创建构建时使用的教程。
http://dojotoolkit.org/documentation/tutorials/1.8/build/
编辑 - 澄清我对排除属性的使用
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
}
}