3

Dojo ツールキットを使用して、クロスドメインとして実行されるコードを実際のビルドを行わずにローカルでテストする適切な方法は何ですか?

ご覧のとおり、3 つのオプションが考えられます(それぞれに欠点があります)。

  1. ローカル (非 xd) XMLHttpRequest dojo.require の使用
    • このオプションは、XHR を介して同期的に js を dojo.require[s] するため、実際には xd の動作をテストしません。
  2. djConfig.debugAtAllCosts = true;
    • このオプションは必要なコードを (「script」タグを介して) 非同期的にロードしますが、XHR を介してコードを取り込み、その中の dojo.require[s] を解析して取り込みます。これは (loader_debug を使用して)、繰り返しますが、これは loader_xd が行っていることではありません。このトピックの詳細については、別の質問を参照してください。
  3. クロスドメイン ビルドの作成
    • このアプローチにはビルドが必要ですが、コードを実行している環境では不可能です (特定のページに必要な js のみを含む独自のオンザフライ ビルド プロセスを使用しています。これはプロセスは開発には適していません)。

したがって、私の質問: xd ビルド (すべてのファイルに xd プレフィックス/サフィックスを追加する) を必要としない loader_xd を使用する方法はありますか?

2 番目の方法 (debugAtAllCosts を使用) も、dojo.require[s] を事前解析する動機に疑問を投げかけます。loader_xd が事前解析しない (またはできない) 場合、テスト/デバッグ用に作成されたメソッドがそうするのはなぜですか?

4

2 に答える 2

3

ペラーは状況を説明しました。モジュールの .xd.js ファイルを生成するだけの場合は、util/buildscripts/jslib/buildUtilXd.js とその buildUtilXd.xdgen() 関数を参照できます。

独自のスクリプトを作成するには少し手間がかかりますが、ポインタについては util/buildscripts/build.js を参照してください。

Dojo の将来 (おそらく Dojo 2.x の時間枠) で、モジュールの周りに関数ラッパーを持つモジュール形式のスクリプト タグのみを使用するローダーに切り替えることができることを願っています。これにより、ローカルと xd のケースで同じモジュール形式が機能するようになります。

于 2009-12-17T21:53:06.267 に答える
1

ビルドしてデプロイせずに XD の読み込みを行う方法はないと思います。さまざまなオプションの分析はほぼ正しいようです。

debugAtAllCosts は、特にデバッグの問題を解決するためにあります。デバッグの問題では、ほとんどのブラウザは、最近まで、eval を通じて取り込まれたコードに対してインテリジェントな処理を行うことができませんでした。今日でも、Firefox は、実際の評価バッファーからではなく、評価からオフセットされた行番号で、評価サイト (bootstrap.js) に表示される例外をコンソールに報告します。通常、その評価バッファーは匿名です。Firebug は、デバッグ エクスペリエンスを強化するためにいくつかの手順を踏んだ最初のデバッガーであり、ソースへのファイルパスを決定するために Dojo のローダーが XHR と eval の間に挿入する特別なメタデータを許可しました。Webkit/Safari も最近これを実装しました。debugAtAllCosts は XD ローダーよりも前のものだと思います。

于 2009-12-17T18:57:26.140 に答える