2017-01-25 1 views
1

JQuery、RequireJSなどのサードパーティのライブラリを利用したカスタムJavaScriptライブラリを作成しています。私の特別なケースではDojoです。カスタムライブラリでは、ホストアプリケーションに依存関係を見えないようにするにはどうすればよいですか?

私のライブラリを使用するには、他のほとんどのライブラリと同様にスクリプトタグを追加する必要があります。しかし、これらのリンク

http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml https://www.sitepoint.com/dynamically-load-jquery-library-javascript/

function loadjscssfile(filename, filetype){ 
    if (filetype=="js"){ //if filename is a external JavaScript file 
     var fileref=document.createElement('script') 
     fileref.setAttribute("type","text/javascript") 
     fileref.setAttribute("src", filename) 
    } 
    else if (filetype=="css"){ //if filename is an external CSS file 
     var fileref=document.createElement("link") 
     fileref.setAttribute("rel", "stylesheet") 
     fileref.setAttribute("type", "text/css") 
     fileref.setAttribute("href", filename) 
    } 
    if (typeof fileref!="undefined") 
     document.getElementsByTagName("head")[0].appendChild(fileref) 
} 

で説明したように、私は以来、動的にサードパーティの依存関係(道場)をロードするために考えていたことが最初にロードマイライブラリ内

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>Host Application</title> 
</head> 
<body> 
    <div>Host Application</div> 
    <script src="~/Scripts/myLibrary/myLibrary.js"></script> 
</body> 
</html> 

ユーザーが私のライブラリーがDojoを使用していることを知らないかもしれない私はアプリケーションにDojoを組み込むシナリオを心配しています。だから、基本的に、彼らはすべきではない、さらにmyLibrary.js

... 
<script src="~/Scripts/myLibrary/myLibrary.js"></script> 
<script src="~/Scripts/dojo-release-1.10.6/dojo/dojo.js"></script> 
... 

私は本当にユーザーが呼び出すと依存関係を使用することができるようにしたくないための2つのJavaScriptファイル、Dojo.jsに1つ、および別のロード私のライブラリーにロードされたという理由だけで、ホスト・アプリケーションでDojoを使用することができます。

は、ホストからの私のカスタムライブラリの依存関係を分離することが可能ですので、彼らは同様のライブラリホストでもロードすることができると干渉しない

EDIT:(も誤って直接の依存関係を使用してからホストを防ぐ - もしたとえば、両方のバージョンに存在するメソッドを呼び出すことで、私のライブラリにバンドルされているバージョンは、意図したバージョンの代わりに実行されます)。

+0

すでに 'requirejs'を使用している場合は、探しているものを実行できるはずです。 'webpack'、' rollup'、 'browserify'のような他のオプションがあります。 –

+0

@DJ。これは、ホストアプリケーションが使用する必要があるものですか? – erotavlas

+0

あなたがロードした依存関係を使用できないようにすることで、あなたは何を達成できますか?あなたが依存関係自体に変更を加えていないとすれば、何がポイントですか?具体的には、どうしても実際には何も防止していないのであれば、ライブラリの二重読み込みを邪魔するのはなぜですか? – Roope

答えて

1

bundleあなたのライブラリと一緒にあなたの依存関係を作成し、すべての必要な部分を含む単一の縮小されたjavascriptファイルを作成します。

webpack(私の推奨)またはbrowserifyのようなツールを使用して、すべてのJSファイルと必要な依存関係を処理し、単一のバンドルを作成します。

これは、バンドルのユーザーには何も要求しません。彼はただ一つの<script>タグが必要です。

両方のツールに関する豊富なドキュメントとチュートリアルがあります。時間をかけてグーグルで学習する。それらを使用する方法を知っているのは良いことです。

関連する問題