コードを依存関係とマージしますか?
-
13-10-2019 - |
質問
これは非常に簡単かもしれませんが、私はこのトピックについて少し混乱していると言わなければなりません。
私は2つの一般的なライブラリに基づいてコードを書いています:
- jquery
- underscore.js
私はちょうど不思議です コードを隔離し、競合を防ぐための最良の方法は何ですか、そしてそれをその依存関係と統合する方法は何ですか?
マージすることは、それらを同じファイルに入れることを意味します。
解決
それらの2つを同じファイルに簡単に配置できます。 window._
, window.$
と window.jQuery
. 。他の変数と関数はローカルスコープに包まれているため、競合はありません。
編集: :あなた自身のコードも同じファイルに入れられる可能性があります。グローバルを削除したい場合は、jQueryとアンダースコアの両方に紛争のない方法があり、グローバルを古い値に置き換えます(多くの場合 undefined
)。あなたはあなた自身のローカルスコープであなたのコードをラップすることができます、そして、もう問題はありません:
// jQuery and Underscore source here
// You code here, wrapped in a self-executing function:
(function($, _){
// here you can add your code:
$('#test').text('jQuery works');
_(3).times(function(){
alert('Underscore works' );
});
})(jQuery.noConflict(true), _.noConflict());
// no jQuery nor Underscore here:
alert(typeof jQuery, typeof $, typeof _);
これは非常にトリッキーに見えますが、すぐに説明させてください。このように、定義した後、すぐに関数を実行できます。
(function(){
alert('I am being executed');
})(); // <-- basically how you call a function normally: func();
そして、あなたはそれに引数を渡すことができます:
(function(a){
alert(a);
})('test');
両方 $.noConflict()
と _.noConflict()
グローバル変数を削除し、jQueryおよびUnderscore変数への参照を返します。したがって、あなたはこれらを自己実行関数で議論とみんなの幸せとして渡すことができます(:
所属していません StackOverflow