我研究了build tutorial,找到了web build(仅限1.7.2),并测试了几个例子 - 但是,我找不到构建系统的简单解释。
假设我的应用是一个网页:
<script src="./js/App/other_non_amd_stuff_working_independently.js">
<script src="./js/lib/dojo/dojo.js" data-dojo-config="async: true"></script>
<script src="./js/App/Main.js">
Dojo SDK位于./lib/,Main.js包含Dojo config + app boot:
require({
packages:[{
name:"App",
location:"../../App"
}]
},
[ "dojo/query",
"dijit/layout/BorderContainer",
"App/Foo",
"dojo/domReady!"], function(query, BorderContainer, Foo) { ... });
我现在的问题就像这样简单:如何从我的所有Dojo / AMD东西中创建一个单独的脚本文件?我只想替换
<script src="./js/lib/dojo/dojo.js" data-dojo-config="async: true"></script>
<script src="./js/App/Main.js">
只有一个
<script src="./js/Main.minified.js">
让构建系统在这方面工作似乎有点不重要。它试图将./App/中的所有文件转换为AMD模块(这不是我想要的......)或者无法找到App / Main。我尝试构建一个构建配置文件(app.profile.js),但除了它添加(IMO不必要的)复杂性之外,我没有明白这一点。 如何使构建系统只连接我的App / Main.js包含。依赖?
对于理解构建系统的更好教程的任何提示也很受欢迎。
答案 0 :(得分:4)
请参阅此QnA以将您的图层构建到dojo.js文件中。我不妨分享一下我的经历,因为我花了一些试验和错误来让我的bootstraps正常工作。实际上,答案很容易在'dojosdk / util / buildscripts / profiles / baseplus.profile.js'文件中找到。
Dojo Custom Build 1.6 into a single file(与新版本系统相同的设置,虽然可能仍会对2.0进行一些更改)
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" ]
]
您可能希望构建应用程序的子模块,以便如果弹出对话框需要额外的额外内容 - 可以在运行时在单独的程序包中下载它们。为确保子模块层中已包含已通过主模块层加载的依赖项,您要查找的属性键为{ {1}}。
对于综合结果,它看起来像这样:
layerDependencies
这应该会产生两个优化的图层文件,一个包含标准的one-line-dojo.js plus 一个dojo.cache条目,其中包含应用程序中的文件。示例用法如下。请注意,您仍然需要为任何缓存的模块调用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" ]
]
}
,否则它们将只保留在缓存中。
注意将dojoConfig放入./js/App/Main.js文件将无法正常工作,dojo.js常规内容将加载到图层上方。
require