私はjavascriptモジュールに取り組んでおり、スタンドアロンにしたいです。また、jQueryが提供するクロスブラウザー機能を使用したいと思います。ユーザーが含める可能性のあるjQueryと競合することなく、モジュール内にjQueryを含めるにはどうすればよいですか?
グローバル名前空間と競合することなくプロジェクトに他のライブラリを追加できるように、これを行う一般的な方法はありますか?
私はjavascriptモジュールに取り組んでおり、スタンドアロンにしたいです。また、jQueryが提供するクロスブラウザー機能を使用したいと思います。ユーザーが含める可能性のあるjQueryと競合することなく、モジュール内にjQueryを含めるにはどうすればよいですか?
グローバル名前空間と競合することなくプロジェクトに他のライブラリを追加できるように、これを行う一般的な方法はありますか?
すべてのjQueryをJSファイルにコピーして、「競合なし」モードで実行してみます。次に、JSファイル全体を、引数をとらない即時呼び出し関数式$
でラップすると、変数がグローバルスコープに干渉することはありません。
したがって、ファイルは次のようになります。
(function () {
// all of jQuery goes here
$.noConflict();
var $ = jQuery.noConflict();
// your code that uses $ here
})();
IIFEですべてをラップすると、$
変数がローカルに保持されるため、ファイル外のコードでアクセスできなくなります。それは少し極端かもしれませんが、うまくいくはずです。
実際にやりたいのは、ユーザーのバージョンの前にjQueryのバージョンが含まれていることを確認することです。次に、コード内で、コードの代わりに、またはコード内で実行var myJQ = jQuery.noConflict();
して使用します。この例を参照してください。myJQ
$
jQuery