グローバルなjQueryを侵入することなく、requirejsとjqueryを使用しますか?

StackOverflow https://stackoverflow.com/questions/4858431

  •  27-10-2019
  •  | 
  •  

質問

プロジェクトで初めてrequirejsを使用しています。私はすでに多くのJavaScriptを導入している環境で働いており、自分のコードを紹介するクリーンな方法を探しています。

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

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

役に立ちましたか?

解決

jQuery 1.7はAMDロードをサポートしています。しかし、jQueryは独自のモジュール名を「jQuery」として強調しているため、競合の名前を挙げるモジュールを避けることです。別のモジュールを「jQuery」として定義している場合(たとえば、requirejs configの「パス」プロパティなど)、その競合を引き起こします。

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

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

requirejsは、jquery-flictが最初にjquery-roaderがロードされるときにのみ実行されるように、jqueryへの参照を「キャッシュ」します。

他のヒント

1つのページの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 拡張できるようにします jQuery グローバルを破壊することなくローカルに jQuery

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

またはあなたが望むどんなショートカット変数

http://docs.jquery.com/using_jquery_with_other_libraries

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top