2011-01-12 13 views
2

現時点ではわかっていないサイトに展開するJavaScriptを作成しています。部分的に外部のJavaScriptライブラリをインライン化する

コードのこの作品は、私はjQueryを使ってそれを行うだけのことができればそんなに容易になるだろう何かをすることになっているが、私はこのコードでは、任意の外部ライブラリを含めることはできません。理由は次のとおりです。

  1. 私ができます私が書いた1つのJavaScriptファイルだけをロードします。
  2. 外部ライブラリが不明なクライアントサイトのコードと競合する可能性があります(既に同じライブラリをサイトに読み込んでいる可能性があります)。
  3. できるだけ早くファイルをダウンロードする必要があります。

私の質問は、私のコードが外部ライブラリ(jQuery)から使用する特定のコードパスだけを抽出するのに役立つツールがあり、そのコードの一部としてコードに直接埋め込むことができる(名前空間などを使用して)?

それとも、私の質問が最初から間違っている可能性があります。

+0

googs closureコンパイラとはどういうことだと思いますか?しかし、ランタイム情報に基づいて実行が分岐するコードは、静的解析を非常に困難にします。 – goat

答えて

2

私はそれが最初の警告と衝突することは知っていますが、スクリプト要素をCDNに書き出すことでコードに動的にjqueryを含めることができます。 CDNから

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js

var headID = document.getElementsByTagName("head")[0];  
var script = document.createElement('script'); 
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js'; 
script.onload = function() { initialiseJQuerySpecificCode(); }; 
headID.appendChild(script); 

function initialiseJQuerySpecificCode() { 
     jQuery.noConflict(); 
     //more jquery code 
     jQuery(document.ready(function() { 
      //initialisetion code 
     })); 
}; 

ロードは、多くのユーザーがすでにキャッシュにそれを持っていることを意味します。また、縮小版はとにかく小さいです。

+0

面白いですが、これは、jQueryがロードされるのを待つことを余儀なくされ、私の警告の最初の項目と衝突することを意味します。 –

+0

CDNを使用する利点は、多くの人が他のサイトから既にjQueryをキャッシュすることです。だからうまくいけば、ブラウザのキャッシュから来るでしょう - StackOverflowのソースを見てください。 また、jQueryはオープンソースなので、好きなだけ分かりやすく解読できます。 –

+0

その問題を自動化する方法があれば、私の質問がありました。 –

関連する問題