2013-04-23 8 views
7

Piszę bardzo podstawową bibliotekę JavaScript, która używa funkcji $ .ajax() jQuery.Najlepszy sposób na spakowanie biblioteki JavaScript wymagającej jQuery?

Jak zarządzać tą zależnością? Czy powinienem polecać użytkownikom mojej biblioteki, aby sami obejmowali jQuery? Czy powinienem użyć czegoś takiego jak RequireJS lub wstawienie znacznika skryptu, aby załadować jQuery w bibliotece? Gdyby to drugie było lepsze, jak mam to zrobić, nie powodując konfliktu, jeśli użytkownik już korzysta z jQuery?

+1

Potrzebuję kogoś, kto używa biblioteki do włączenia jQuery na własną rękę. Jest on dość powszechny i ​​podkreśli, że należy wziąć pod uwagę wszelkie niezgodności w ich własnym kodzie. –

+2

Proponuję, aby Twoja biblioteka wyrzuciła wyjątek, jeśli jQuery nie jest dołączony i używana jest metoda wymagająca jQuery. Grupowanie jQuery z nim automatycznie może spowodować znacznie gorsze bóle głowy w sytuacjach, w których jQuery jest już zawarty, niż wymaganie, aby sam je uwzględnić. –

+5

Jeśli wszystkie twoje potrzeby biblioteki to '$ .ajax', po prostu rób własne XMLHttpRequests. Przykro mi, ale byłoby to szalenie wymagać jQuery tylko dla XHR. –

Odpowiedz

2

Myślę, że to zależy od tego, czy masz więcej zależności, niż jQuery.

Jeśli jQuery jest twoją jedyną zależnością, a twoja biblioteka tak naprawdę nie potrzebuje własnego systemu zależności modułów, nie poleciłbym RequireJS. Po prostu sprawdź, czy istnieje jQuery w bibliotece, i wyślij błąd w przeciwnym razie.

Jeśli jednak chcesz stworzyć elastyczną i łatwą do utrzymania bibliotekę, poleciłabym użycie modułu ładującego moduły (np. RequireJS). Daje to również tę zaletę, że przy użyciu build system który pozwala na łączenie i spakować bibliotekę

0

Zalecam doradzić użytkownikom, aby najpierw uwzględnili jquery. Jeśli pozwolisz mi wybrać dowolny przykład, zobaczysz, że jest to naprawdę używane podejście (np. Framework .net).

1

skończyło się na pisanie własnych funkcji do pobierania danych JSON jako głupiutką mnie zalecanej w oryginalnym poście. Dziękuję wszystkim, którzy odpowiedzieli. Wskazówki dotyczące zależności bibliotek JavaScript były bardzo cenne, mimo że przeszedłem na tę inną trasę.

Użyłem this Stack Overflow answer jako przewodnika do napisania własnej funkcji pobierania JSON. Musiałem pobierać dane synchronicznie, więc dostosowałem funkcję za pomocą wskazówek przedstawionych w this other article.

W końcu moja funkcja wyglądała tak. Mam nadzieję, że pomoże to komuś innemu, kto przyjdzie.

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

Należy pamiętać, że to nie zadziała w starszych IE, jeśli tego potrzebujesz. – blockhead

+0

Dzięki za opinię @blockhead. Jaka część łamie kompatybilność? Wywołanie JSON.parse? –

+0

Po prostu zobaczyłem, że moje ostatnie pytanie zostało odebrane w [odpowiedź] (http://stackoverflow.com/questions/14388452/how-do-i-load-a-json-object-from-a-file-w-ajax/14388512 # 14388512) Powyżej. –

Powiązane problemy