dojo的最小构建配置如何?

时间:2012-08-16 13:23:57

标签: dojo dojo-build

我研究了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包含。依赖?

对于理解构建系统的更好教程的任何提示也很受欢迎。

1 个答案:

答案 0 :(得分:4)

请参阅此QnA以将您的图层构建到dojo.js文件中。我不妨分享一下我的经历,因为我花了一些试验和错误来让我的bootstraps正常工作。实际上,答案很容易在'dojosdk / util / buildscripts / profiles / baseplus.profile.js'文件中找到。

Dojo Custom Build 1.6 into a single file(与新版本系统相同的设置,虽然可能仍会对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" ]
]

如何创建子模块层

您可能希望构建应用程序的子模块,以便如果弹出对话框需要额外的额外内容 - 可以在运行时在单独的程序包中下载它们。为确保子模块层中已包含已通过主模块层加载的依赖项,您要查找的属性键为{ {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" ] ] } ,否则它们将只保留在缓存中。

将它放在HTML

注意将dojoConfig放入./js/App/Main.js文件将无法正常工作,dojo.js常规内容将加载到图层上方。

require