問題タブ [dojo-build]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
build - Dojo カスタム ビルドで、リソースが見つからないためにブラウザー エラーが発生する
AMD ベースの Dojo ビルド システムの学習に苦労しています。これまでのところ、ブラウザー (FF) でロード エラーが発生せずに使用できるビルドを取得できていません。
ビルドの管理方法について質問があります。
私のビルド プロファイル ファイルには、packages セクションがあります。私が指定した内容は、宛先ディレクトリに書き込まれている同じパッケージ ディレクトリに直接関連しているようです。これは適切なようです。ただし、dojo、dijit、dojox などから「参照された」モジュールだけをマージしようとしているレイヤー セクションもあります。それらが 1 つの dojo.js ファイルに結合されると、宛先ディレクトリにそれらのライブラリ ディレクトリがすべて残っています。 . 手動でそれらを削除するだけであることが理解されていますか、それともビルド中にそれらを自動的に削除する方法はありますか?
最初のレイヤーでは、dojo、dijit、および dojox/app/main 用にビルドしようとしています。これは、dojo/resources/blank.gif や同じディレクトリ内の .css ファイルなどのリソースをプルするわけではありません。これらのリソース ファイルをコピー先にコピーするにはどうすればよいでしょうか。dojo.profile.js (これらのリソースをコピーすることを示しています) は dojo ディレクトリにのみ影響を与えると思います。しかし、js モジュールを組み合わせたカスタム dojo/dijit/dojox ファイルを作成しているため、リソース ディレクトリはありません。カスタム・ビルドの後、手動で dojo ディレクトリーに移動し、dojo/resources ディレクトリーを移動して、残りの dojo ディレクトリーを破棄する必要がありますか? dojo/dijit 層が構築されたときに、カスタム dojo.js 層ファイルで使用するために dojo dir でアクセス可能な依存 img および css ファイルを取得する方法がわかりません。
ここに私のビルドプロファイルがあります:
更新:これは私のディレクトリ構造です。dojox/app 構造に基づく:
ビルドには、dojox/app の例に基づいた build.sh ファイルを使用しますが、それが呼び出す内部コマンド ラインは次のとおりです。
dojo - dijit 用の Dojo ビルドは、未定義のみを含むファイルを作成します。
自分の dojo アプリケーションのカスタム ビルドを作成しています。次の profile.js を作成しました。
はdojo/dojo.js
作成されますが、dijit/dijit.js
テンプレート テキストのみが含まれます。
//>>構築済み
未定義;
ただし、ファイルdijit.js.uncompressed.js
は正しく作成されます (998 KB)。
dojo ビルドがそのように動作するのはなぜですか? その構成にはどのようなエラーがありますか? Dojo のドキュメントは非常に謎めいています。
- 編集 -
出力ファイルの指定に問題があるようです。「dijit/dijit」enter code here
を'dojo/dijit'
ファイルに変更すると、サブディレクトリdijit.js
に作成されますdojo
。カスタム名でビルドを作成する場合は、サブディレクトリにも作成する必要がありdojo
ます。それ以外の場合は、空のファイル (のみを含むundefined;)
) が作成されます。
javascript - HTML ヘッダーからレイヤーをロードすると、Dojo ビルドが IE9 で失敗する: プロパティ 'dir' が定義されていません
私は dojo ビルドを作成しましたが、ビルドを有効/無効にする際の柔軟性が欲しかったので<script>
、HTML ヘッダーのタグにロードしようとしました:
JSファイルを変更せずに残しました。機能しているようですが、問題がありましたが、IE9 のみで、WebSphere にデプロイされたアプリケーション バージョンのみでした (私は Apache2 でテストしました)。問題は、その特定のコード フラグメントでプロパティ 'dir' が定義されていないことでした。
同様の問題をいくつか検索した後 ( 「プロパティ 'dir' の値を取得できません: オブジェクトが null または未定義です」エラーを防止する方法 IE9 でページをロードするときに)、ロード シーケンスである可能性があることを検出しました。問題。HTML ヘッダーからレイヤーを削除し、次の順序で JS にロードしました。
ただし、人々がビルドを HTML ヘッダーにロードしていることは知っています。たとえば、ここのトピックから: Dojo Builds...? 今何?
私の質問は、私が何か間違ったことをしているのですか、それとも HTML ヘッダーを使用したそのトリックは、すべてのブラウザーで動作することが保証されているわけではありませんか?
これは私のビルドスクリプト構成です:
これは dojo の build.bat です。
javascript - dojo レイヤーで require({cache:{ を使用するには?
dojo-buildタグを読んだ後、ビルドのカスタマイズに関して人々が抱えている多くの問題を発見したので、代わりに自分でビルドを作成することを考えました。しかし、Dojo AMD 層を構築する際に使用される構文のリファレンスを見つけることができませんでした。つまり、次のとおりです。
キャッシュは、モジュール名がキーであるマップであり、値は、本体がモジュール ファイルの内容である関数のようです。
しかし、私は下の部分を完全には理解していません:
この「*今」もキーなのですが、特殊な解釈があるようです。私のモジュールでそれが必要ですか? それともオプションですか?
最後の部分です。レイヤーモジュールがどこにも直接参照されない場合でも、この定義を行うことは必須ですか?