2013-04-23 18 views
7

jQueryの$ .ajax()関数を使用する非常に基本的なJavaScriptライブラリを作成しています。jQueryが必要なJavaScriptライブラリをパッケージ化する最も良い方法は?

この依存関係はどのように管理する必要がありますか?私のライブラリのユーザーにjQueryを組み込むよう指示する必要がありますか?ライブラリ内でjQueryをロードするためにRequireJSやスクリプトタグの挿入などを使用する必要がありますか?後者の方が良ければ、ユーザーがすでにjQueryを使用している場合に、どうやって競合を起こさずにこれを行うのですか?

+1

jQueryを独自に組み込むには、ライブラリを使用している人が必要です。これは一般的なことであり、独自のコード内での非互換性を考慮する必要があることを強調しています。 –

+2

jQueryが含まれておらず、そのメソッドがjQueryを使用している場合、ライブラリが例外をスローすることをお勧めします。 jQueryをバンドルすると、自動的にjQueryが組み込まれている状況では、自動的にjQueryを組み込む必要があります。 –

+5

あなたのライブラリが必要とするものが '$ .ajax'ならば、あなた自身のXMLHttpRequestsを実行してください。申し訳ありませんが、XHRのためだけにjQueryを要求するのは難しいです。 –

答えて

2

jQuery以外の依存関係があればそれはちょっと違うと思います。

jQueryがあなたの唯一の依存関係であり、あなたのライブラリがそれ自身のモジュール依存システムを本当に必要としないなら、RequireJSはお勧めしません。あなたのライブラリにjQueryが存在するかどうかをチェックし、そうでなければエラーを投げてください。

しかし、柔軟でメンテナンス可能な図書館を目指しているのなら、RequireJSのようなモジュールローダーを使用することをお勧めします。また、これはあなたが、私はオリジナルのポストに推奨他愛ない私としてJSONデータをフェッチするために自分自身の関数を書くことになった

0

jqueryを最初に含めるようアドバイスすることをお勧めします。あなたが私に任意の例を選択させるなら、これは本当に使われているアプローチ(例えば網のフレームワーク)であることが分かります。

1

を組み合わせて、あなたのライブラリーをパックすることができますbuild systemを使用することの利点を提供します。答えた人のおかげです。私がこの他のルートを下ったとしても、JavaScriptライブラリの依存関係に関するガイダンスは非常に貴重でした。

私はthis Stack Overflow answerをJSONをフェッチするための独自の関数を記述するためのガイドとして使用しました。私はデータを同期的に取得する必要があったので、this other articleで概説されたヒントを使って関数を調整しました。

最後に、私の機能はこのように見えました。私はそれが来る他の誰かを助けることを願っています。

var fetchJSON = function(path, callback) { 
    var httpRequest = new XMLHttpRequest(); 
    httpRequest.open('GET', path, false); 
    httpRequest.send(); 
    if (httpRequest.readyState === 4) { 
    if (httpRequest.status === 200) { 
     var data = JSON.parse(httpRequest.responseText); 
     if (callback) callback(data); 
    } 
    } 
} 
+0

これは古いInternet Explorerでも必要な場合には機能しません。 – blockhead

+0

フィードバックいただきありがとうございます、@ブロックヘッド。どの部分が互換性を壊しますか? JSON.parseコール? –

+0

ちょうど私の最後の質問が[答え]で答えられたことを見た(http://stackoverflow.com/questions/14388452/how-do-i-load-a-json-object-from-a-file-with-ajax/14388512#14388512)私は上記を参照しています。 –

関連する問題