3

Dojo アプリが提供する構築システムを使用して Dojo アプリを構築しようとしています。dojo、dijit、および dojox ライブラリをロードするメインの index.php ファイルがあります。

プロジェクトの構造は次のようなものです。

- 根
  - _プロフィール
  - _リリース
  --dojo-1.3.2-src
    -- ジジット
    -- 道場
    -- ドジョックス
    -- ユーティリティ
  --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 dir が設定されます。

- 根
  - _プロフィール
  - _リリース
    -- myapp
       -  アプリ
          -- all_my_code
          -- nls
          -- init.js.uncompressed.js
          -- init.js (すべての依存関係が圧縮された 2Mb ファイル)
       -- ジジット
       -- 道場
       -- ドジョックス
       -- ユーティリティ
  --dojo-1.3.2-src
    -- ジジット
    -- 道場
    -- ドジョックス
    -- ユーティリティ
  --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

実際にアプリを起動すると、1 つのファイルだけが正しく読み込まれるので、すべてのパスで問題がなかったと思います。実際、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 に答える