複数のJSライブラリの導入は、紛争解決(RPM)で同じページを生成しました

  JSライブラリの競合の主な理由: jQueryライブラリは、多くのJSライブラリは、そのシンボルとして「$」記号を使用しています。したがって、JSライブラリ内の複数のページを導入し、これは、その代表者の私自身の解釈である(ライブラリを認識し、それを分析するために、深いjQueryのソースコードに移動する必要がある深い理由はありませんコード、として「$」を使用そのため、一時的に深ディスカッション・ペーパー)。

  ソリューション:

  完全に競合を解決するためのJSライブラリは、以下の方法に分けることができます。

    使用jQueryのjQueryオブジェクト識別子(別名)として、識別子① '$' を転送します。

    あるいは②別名「$」とjQueryの識別子、例えば以下$ Jとして(任意の名前を取ることができます)。

VaRの $ jを= jQuery.noConflict(); 
$ jの(。 "#div")非表示();

    匿名関数を使用③

jQuery.noConflict()                                                                                                      関数($){ 
  $(関数(){
     // jQueryのエイリアスコード$として使用
  );} 
})(jQueryの);                                                                                                       
... // コード$別名他のライブラリと

  ケース1:もし他の後のライブラリーにjQueryライブラリ

  方法:この場合、どのように他のライブラリがjQuery.noConflict()jQueryの放出制御「$」の識別子を使用されるであろう識別子として「$」を使用するように、それは(「$」)は最初に道を譲りましたそのライブラリーの実現。

  例えば:

ます。<script type = "text / JavaScriptの" SRC = "http://axdhxyzx.blog.163.com/blog/other_lib.js"> </ SCRIPT> 
<スクリプトタイプ= "テキスト/ JavaScriptを" SRC =「HTTP:/ /axdhxyzx.blog.163.com/blog/jquery.js "> </ SCRIPT> 
                                                                              
<スクリプトタイプ="テキスト/ JavaScriptを「> 
  $ .noConflict();     // $その最初の実装ライブラリを転送します。
                                                                          
  jQueryの( "#div")非表示();.     // 識別子jQueryライブラリのjQueryとして使用
                                                                          
  $( "#div")非表示();.    // 別のライブラリコード$の使用 
</ SCRIPT>

  あなたはまた、すなわち、エイリアスを使用して、第二の方法を使用することができます。例えば:

ます。<script type = "text / JavaScriptの" SRC = "http://axdhxyzx.blog.163.com/blog/other_lib.js"> </ SCRIPT> 
<スクリプトタイプ= "テキスト/ JavaScriptを" SRC =「HTTP:/ /axdhxyzx.blog.163.com/blog/jquery.js "> </ SCRIPT>                                                                              
<スクリプトタイプ="テキスト/ JavaScriptを「> VAR noConflict $ $ J =();     // 最初の実装$を転送そのライブラリ。                                                                         
  $ jの( "#div")非表示();.     // 識別子$ jのjQueryライブラリとして使用                                                                         
  $( "#div")非表示();.    // 別のライブラリコード$の使用 
</ SCRIPT>
  

  または第三の方法、即ち、例えば使用無名関数:

jQuery.noConflict() 
                                                                   関数($){   // パラメータとして匿名関数'$'と 
  $(関数(){
     // jQueryのエイリアスコード$として使用
  );} 
})(jQueryの);     // jQueryのは、パラメータ値として渡された
                                                                   
... // エイリアスとして$で他のコードベースを

  ケース2:あなたは、他の前にjQueryライブラリをインポートする場合

  方法:この場合には、「$」識別子を転送するjQuery.noConflict()メソッドを使用しません。例えば:

ます。<script type = "text / JavaScriptの" SRC = "http://axdhxyzx.blog.163.com/blog/jquery.js"> </ SCRIPT> 
<スクリプトタイプ= "テキスト/ JavaScriptを" SRC =「HTTP:/ /axdhxyzx.blog.163.com/blog/other_lib.js "> </ SCRIPT> 
                                                                              
<スクリプトタイプ="テキスト/ JavaScriptを"> 
                                                                          
  jQueryの( " #div「)非表示();.     // jQueryライブラリのjQueryのように使用識別子
                                                                          
  $( "#div")非表示();.    // 別のライブラリコード$の使用 
</ SCRIPT>

  だからここに質問です:なぜ)(インポートライブラリjQuery.noConflictを使用する必要があります他のライブラリの前にjQuery.noConflictを()をインポートするためにはjQueryを使用して、他の後にする必要はないのですか?

  さらに、jQuery.noConflict()メソッドはまた、ブール型パラメータを備えていてもよいです。アクションパラメータは次のとおりです。完全にjQueryの新しいネームスペースに(完全に別のオブジェクトで新しい名前空間へのjQueryを移動します。)

  あなたはjQueryのポインティング新しいスペースを作成するために、ある同じページ、上のjQueryの異なるバージョンをインポートする必要がある場合、このパラメータは、使用のために主にあります。これは非常にではありません明らか。

  例えば:

VaRの DOM = {}; 
dom.query = jQuery.noConflict(真の); 
  結果:
dom.query( "のdiv P"。)非表示();   // 新しいjQueryのコード                                                            
$( "コンテンツ")style.display。 = "なし";     // 別のライブラリの$()コード                                                            
のjQuery( "div>のP-")非表示();.     // jQueryのコードの別のバージョン

  概要:jQueryの競合のためのJSライブラリは、私が唯一の解決方法を知っています。そして私は、理由の具体的な詳細を知らないと、次のステップは、解決策を見つけるための努力にあるように、特定の技術的な知識は、明確ではありません。jQueryライブラリの競合のために、私はまだ質問が残っています:

  ①なぜjQueryのインポート他のライブラリの前にjQuery.noConflict()を使用することなく、そして他の後にインポートライブラリをjQuery.noConflict()を使用する必要がありますか?

  ②同じページにjQueryライブラリの異なるバージョンの導入の決済に、解決するための詳細jQuery.noConflict(true)を使用して?(のような:?順序がなど、さまざまなソリューションにつながるかどうかのライブラリの導入)

  ③なぜ、同じページに複数のJSライブラリの導入は、エラー、どのような具体的な理由を引き起こすのでしょうか?

ます。https://www.cnblogs.com/JoannaQ/p/3387184.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34088838/article/details/93056829