21

プロジェクトで初めてrequirejsを使用しています。私はすでに多くの Javascript が配置されている環境で作業しており、独自のコードを導入するためのクリーンな方法を探しています。

私が抱えている問題は、既存のjQueryを破壊しない、ロードできるjQueryのモジュールが見つからないように見えることです。

require-jquery.js でさえ jQuery のグローバル バージョンを導入していることに驚きました。グローバルを導入せずにjQueryをモジュールとしてロードする方法はありますか?

4

3 に答える 3

24

jQuery 1.7 は AMD の読み込みをサポートしています。ただし、jQuery は独自のモジュール名を「jquery」としてハードコーディングするため、モジュールの名前付けの競合を回避することが秘訣です。別のモジュールを「jquery」として定義している場合 (たとえば、requirejs 構成の「paths」プロパティで)、競合が発生します。

jQuery を requirejs アプリケーション スコープにロードするには、「jquery-loader」などのモジュールを定義します。jQuery をロードする場合は、「jquery-loader」を介して実行します。

define(['path/to/jquery.min'], function () {
    return jQuery.noConflict(true);
});

requirejs は jQuery への参照を「キャッシュ」するため、noConflict は jquery-loader が初めてロードされたときにのみ実行されます。

于 2012-03-07T00:02:56.673 に答える
3

1 つのページに複数のバージョンの jQuery があるのは良くありません。ハッキングをやめて jQuery をアップグレードするか、古いバージョンを使用してください。

$安全を保つために

(function($) {
    // requirejs inclusion block for loading


}(jQuery.noConflict(true));

それに渡すtrue.noConflict、古い変数が置き換えjQueryられ、グローバルに破棄されません。

つまり、静かに渡すことができます。あなたが持っていると言う

<script src="jquery-1.2">
<script src="jquery-1.5">

次に、上記のコードを使用すると、1.2 $&jQueryがグローバル スペースに戻され、1.5 jQuery が$クロージャのローカルとして提供されます。

繰り返しになりますが、複数のバージョンを使用することをお勧めます。これは、混乱とメンテナンスの悪夢だからです。

1.5 を使用している場合は、グローバルを破損することなくローカル.subに拡張できるようにするために使用することもできますjQueryjQuery

于 2011-02-01T03:08:19.803 に答える
-3

jQueryスクリプトをロードしてから使用しますvar myJ = jQuery.noConflict();

または、必要なショートカット変数

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

于 2011-02-01T03:04:59.500 に答える