4

AMD 用の RequireJS を使用するプロジェクトに jQuery Mobile を含めようとしていますが、jQuery Mobile を AMD モジュールとしてロードしたくありません。この背後にある考え方は、アプリケーション固有のロジックに AMD を使用することですが、スクリプト タグを手動で定義するだけで、jQuery などの外部ライブラリの依存関係をグローバル スコープに持ち込むことができます。

私が抱えている問題は、RequireJS スクリプト タグが RequireJS に匿名モジュールを定義させ、理解できない競合を引き起こすように見える前に、jQuery モバイルのスクリプト タグを定義することです。define()jQuery と jQuery Mobile の両方のコードを調べたところ、存在する場合はメソッドを条件付きで呼び出すように設定されています。RequireJS が読み込まれる前にこれらのタグを含めているため、define(). これをブレークポイントで再確認しましたが、実際にはそうではありません。

jQuery Mobile を含めると、次のエラーが発生します。

エラー: 匿名の define() モジュールが一致しません: [object Object]

jQuery Mobile が を呼び出していない場合、これがどのように発生するのかわかりませんdefine()。ここで何が間違っていますか?これは、jQuery Mobile の新しい条件付き AMD サポートによるものですか?

4

1 に答える 1

4

確認するには、ビルドされたバージョンの jQuery モバイルを使用する必要があり、それを次のように require.js タグの前に含める必要があります。jQuery モバイルはそれに依存しているため、jquery がスクリプト タグとして含まれていることに注意してください。

<script src="scripts/jquery.js"></script>
<script src="scripts/jquery.mobile.js"></script>
<script src="scripts/require.js" data-main="scripts/app"></script>

私はそれがうまくいくことを期待しています。次のようなスクリプトがある場合、表示されるエラーが生成される可能性があります。

<script src="scripts/require.js" data-main="scripts/app"></script>
<script src="scripts/jquery.js"></script>
<script src="scripts/jquery.mobile.js"></script>

これは、jQuery モバイルの問題ではなく、RequireJS の問題であると考えており、RequireJS 1.1 で修正したいと考えています。ただし、スクリプト タグの最初のセットは機能するはずです。

そうでない場合は、アプリの JS モジュールが jQuery と jQuery モバイルをどのように使用しているかを詳しく知ると興味深いでしょう。

于 2012-03-01T19:49:21.467 に答える