3

我正在尝试使用它提供的构建系统构建一个 Dojo 应用程序。我有一个加载 dojo、dijit 和 dojox 库的主 index.php 文件

项目的结构类似于:

- 根
  - _轮廓
  - _发布
  --dojo-1.3.2-src
    -- 迪吉特
    ——道场
    -- dojox
    -- 实用程序
  --myApp
    --init.js
    --folders_with_all_my_code
  --index.php

在 _profile 文件夹中,我的 myApp.profile.js 包括:

dependencies = {

    stripConsole    : 'all',
    action      : 'clean,release',
    optimize    : 'shrinksafe',
    releaseName : 'myApp',
    localeList  : 'fr,es,it',

    layers: [
        {
            name        : "../app/init.js",
            resourceName    : "myApp.init",
            dependencies    : [
                  "myApp.init"
            ]
        }
    ],

    prefixes: [
        [ "dijit",  "../dijit" ], 
        [ "dojox",  "../dojox" ],
        [ "app",    "../../app" ]
    ]

};

我正在启动这个脚本来构建应用程序:

cd ../dojo-1.3.2-src/util/buildscripts

./build.bat profileFile=../../../_profile/myApp.profile.js releaseDir=../../../_release

它构建正常并按预期设置 _release 目录:

- 根
  - _轮廓
  - _发布
    --我的应用
       -  应用程序
          -- all_my_code
          --nls
          -- init.js.uncompressed.js
          -- init.js(包含所有压缩依赖项的 2Mb 文件)
       -- 迪吉特
       ——道场
       -- dojox
       -- 实用程序
  --dojo-1.3.2-src
    -- 迪吉特
    ——道场
    -- dojox
    -- 实用程序
  --myApp
    --
  --index.php

在 index.php 文件中,在构建之前,我包含以下内容:

var djConfig = {
    parseOnLoad: true, 
    usePlainJson: true,
    modulePaths : { 'app' : '../../myApp/app' }
};

script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script
script ... dojo.require('app.init'); ... /script

并且工作正常。但是一旦我编译了我的层,我应该更改指向 dojo.js 的脚本以指向新创建的层并将 dojo.require 指向新的压缩层。由于在我指定的配置文件中,图层的位置与原始 init,js 文件相同,因此我得到以下信息:

var djConfig = {
    parseOnLoad: true, 
    usePlainJson: true,
    <s>modulePaths : { 'app' : '../../myApp/app' }</s>
};

<s>script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script</s>
<s>script ... dojo.require('app.init'); ... /script</s>

script ... src="/_release/myApp/dojo/dojo.js"> ... /script
script ... dojo.require('app.init'); ... /script

实际上,当我启动应用程序时,它只正确加载了一个文件,所以我猜路径一切正常。实际上,在 Firebug 日志中,我可以看到 GET 请求,如果展开它,我可以看到所有应用程序都已压缩。但是,在加载它之后,它会启动一个异常:

Could not load 'app.init'; last tried '../../myApp/app/init.js'

我不确定,但路径似乎没有问题,因为它正在下载文件 init.js,所以现在我有点困惑。

任何想法?

谢谢!

4

1 回答 1

0

尝试玩modulePaths或玩dojoConfig.baseUrl

您也可以尝试customBase使用属性,这样您只需要加载您的 dojo.js,它就会包含所有内容,甚至是您的应用程序。(https://dojotoolkit.org/reference-guide/1.10/build/customBase.html

于 2015-06-15T14:52:26.393 回答