请参阅此 QnA 以将您的层构建到 dojo.js 文件中。我不妨分享一下我的经验,因为我花了一些试验和错误才能让我的引导程序正常工作。实际上,答案很容易在“dojosdk/util/buildscripts/profiles/baseplus.profile.js”文件中找到。
Dojo 自定义构建 1.6 到单个文件中(与新构建系统相同的设置,但对于 2.0 可能仍会进行一些更改)
如何创建与dojo.js缝合在一起的主应用层
dependencies ={
layers: [
{
name: "dojo.js", // overwrites regular dojo.js and ++'s your layer
dependencies: [
"app.main"
]
}
}
请记住正确地为位置添加前缀
由于您将“App”模块放置在 dojo SDK 根目录之外,因此需要packages
在dojoConfig
. 但是,属性键prefixes
用于图层配置文件。
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "App", "../../App" ]
]
如何创建子模块层
您可能想要构建您的应用程序的子模块,以便如果弹出对话框例如需要额外的额外 - 它们可以在运行时在单独的包中下载。为了确保已经通过您的main-module-layer加载的依赖项不包含在sub-module-layer中,您要查找的属性键是layerDependencies
.
它看起来像这样的组合结果:
dependencies ={
layers: [
{
name: "../dojo/dojo.js", // overwrites regular dojo.js and ++'s your layer
dependencies: [
"app.Main"
]
}, {
name: "../../App/JITModule.js",
layerDependencies: [
"../../App/Main" // tells this layer that the dependencychain in Main is allready loaded (programmer must make sure this is true ofc)
]
dependencies: [
"App.JustInTimeDialog"
]
}
]
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "App", "../../App" ]
]
}
这应该会产生两个优化的层文件,一个带有标准的 one-line-dojo.js加上一个 dojo.cache 条目,其中包含来自您的应用程序的文件。示例用法如下。请注意,您仍然需要调用require
任何缓存的模块,否则它们将仅保留在缓存中。
将其放在 HTML 中
注意将您的 dojoConfig 放入 ./js/App/Main.js 文件将无法按预期工作,dojo.js 常规内容会在图层上方加载。
<head>
<script>
function JITDialog() {
require([ "App.JITDialog" ], function(dialoglayer) {
var dialog = new App.JustInTimeDialog();
dialog.show();
});
}
var dojoConfig = {
async: true,
packages:[{
name:"App",
location:"../../App"
}]
}
</script>
<script src="./js/lib/dojo/dojo.js"></script>
<script>
require("App.Main", function() {
// loads the layer, depending on the structure of App.Main class,
// you can call your initializations here
var app = new App.Main();
app.run();
});
</script>
</head>
<body>
<button onclick="JITDialog();">
Download sub-module-layer and show a dialog on user interaction
</button>
</body>