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をダウンロードしているので、パスに問題はないようです。そのため、少し混乱しています。
何か案が?
ありがとう!