レイヤーをdojo.jsファイルにビルドする方法については、このQnAを参照してください。ブートストラップを正しく機能させるには試行錯誤が必要だったので、経験を共有したほうがよいでしょう。実際、答えは「dojosdk / util / buildscripts / profiles/baseplus.profile.js」ファイル内で簡単に見つかります。
Dojo Custom Build 1.6を単一のファイルに(新しいビルドシステムと同じセットアップですが、2.0ではまだいくつかの変更が加えられる可能性があります)
dojo.jsと一緒に縫合されたメインアプリケーション層を作成する方法
dependencies ={
layers: [
{
name: "dojo.js", // overwrites regular dojo.js and ++'s your layer
dependencies: [
"app.main"
]
}
}
場所に適切なプレフィックスを付けることを忘れないでください
'App'モジュールがdojoSDKルートの外部に配置されているため、で割り当てるのと同じものを適用する必要がありpackages
ますdojoConfig
。ただし、属性キーはprefixes
レイヤープロファイル用です。
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "App", "../../App" ]
]
サブモジュールレイヤーの作成方法
アプリのサブモジュールを作成して、たとえばポップアップダイアログに追加の追加が必要な場合に、実行時に別のパッケージでダウンロードできるようにすることができます。main-module-layerを介してすでにロードされている依存関係がsub-module-layerに含まれていないことを確認するために、探している属性キーはですlayerDependencies
。
組み合わせた結果は次のようになります。
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" ]
]
}
これにより、2つの最適化されたレイヤーファイルが作成されます。1つは標準のone-line-dojo.jsと、アプリのファイルを含むdojo.cacheエントリです。使用例は次のとおりです。キャッシュされたモジュールを呼び出す必要があることに注意してください。そうしないと、require
モジュールは単にキャッシュに残ります。
HTMLでまとめる
注dojoConfigを./js/App/Main.jsファイルに入れると、期待どおりに機能しません。dojo.jsの通常のコンテンツはレイヤーの上にロードされます。
<head>
<script>
function JITDialog() {
require([ "App.JITDialog" ], function(dialoglayer) {
var dialog = new App.JustInTimeDialog();
dialog.show();
});
}
var dojoConfig = {
async: true,
packages:[{
name:"App",
location:"../../App"
}]
}
</script>
<script src="./js/lib/dojo/dojo.js"></script>
<script>
require("App.Main", function() {
// loads the layer, depending on the structure of App.Main class,
// you can call your initializations here
var app = new App.Main();
app.run();
});
</script>
</head>
<body>
<button onclick="JITDialog();">
Download sub-module-layer and show a dialog on user interaction
</button>
</body>