2011-09-14 12 views
2

<script>タグを使用してバニラJavaScriptでJSONPを使用すると、srcのタグを使用してJavaScriptプラグインやライブラリを使用する他のJavaScriptコンポーネントと同じ方法を使用することを検討しましたできるだけ。潜在的に注入する必要がある可能性が人気のライブラリーの例としてはjQueryを使用して動的によるJavaScript依存性注入<script>タグ

...

// make sure we don't load it if already loaded. 
if (typeof jQuery === 'undefined') { 
    var dependency = document.createElement('script'); 
    dependency.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"; 
    document.getElementsByTagName('head')[0].appendChild(dependency); 
} 

window.onload = function() { 
    // jQuery is now available w/o the extra <script> tag added by the end user... 
} 

は本当にこの時点で、それは主に(が、仕事を行います)概念だが、私は思ったんだけどこれがJavaScriptの依存関係注入のための受け入れ可能な解決策と考えられるのであれば?これについての考えは?

答えて

1

このトリックを実装する前に、なぜが必要かを検討する必要があります。コードが重要で、未知の環境で使用する必要がある場合には、この方法を使用することは許容されます。外部のWebサイト用にWebプラグインを構築する場合は、開発者に必要なライブラリを含めるようにしてください。それはより効率的で信頼性も高くなります。

あなたの例について:コードを(匿名)関数の中に入れて、不要な変数でグローバルスコープを埋めることはできません。

+0

良い考え、ありがとう! – jondavidjohn

0

はい、それはgoogle.load()の背後にあるコンセプトだと思います。

+0

hahですが、それ自体は非注入依存性です...そうですか? – jondavidjohn

+0

:)はい。要点は、それが有効なアプローチであるだけでなく、広く尊敬されている大規模なソフトウェア会社や図書館の開発者によって使用されていることです。私はあなたがその技術を使うのにGoogleを使わなければならないと言っているわけではない。 – gilly3