2013-04-23 18 views
7

Sto scrivendo una libreria JavaScript molto semplice che usa la funzione $ .ajax() di jQuery.Il modo migliore per impacchettare una libreria JavaScript che richiede jQuery?

Come devo gestire questa dipendenza? Dovrei chiedere agli utenti della mia biblioteca di includere jQuery da soli? Dovrei usare qualcosa come RequireJS o l'inserimento di tag script per caricare jQuery all'interno della libreria? Se quest'ultimo fosse migliore, come faccio a farlo senza causare un conflitto se l'utente sta già usando jQuery?

+1

Vorrei che qualcuno usasse la libreria per includere jQuery per conto proprio. È abbastanza comune e evidenzierà la necessità di considerare eventuali incompatibilità all'interno del proprio codice. –

+2

Suggerirei di fare in modo che la libreria lanci un'eccezione se jQuery non è incluso e viene utilizzato un metodo che richiede jQuery. Raggruppare jQuery con esso automaticamente può causare mal di testa molto peggio per le situazioni in cui jQuery è già incluso piuttosto che richiedere loro di includerlo da sé. –

+5

Se tutta la tua biblioteca ha bisogno di '$ .ajax', allora fai il tuo XMLHttpRequests. Mi dispiace, ma sarebbe pazzesco richiedere jQuery solo per XHR. –

risposta

2

Penso che dipenda in qualche modo se hai più dipendenze, oltre a jQuery.

Se jQuery è la tua unica dipendenza e la tua libreria non ha realmente bisogno del proprio sistema di dipendenza del modulo, non vorrei raccomandare RequireJS. Controlla l'esistenza di jQuery nella tua libreria e genera un errore altrimenti.

Se si sta cercando di creare una libreria flessibile e manutenibile, si consiglia di utilizzare un caricatore di moduli (come RequireJS). Questo ti dà anche il vantaggio di utilizzare un build system che consente di combinare e imballare la libreria

0

Si consiglia di consigliare agli utenti di includere prima jquery. Se mi lasci scegliere un esempio, vedrai che questo è un approccio molto utilizzato (ad esempio .net framework)

1

ho finito per scrivere la mia propria funzione per recuperare i dati JSON come po 'sciocco mi consigliato nel post originale. grazie a tutti quelli che hanno risposto. Le indicazioni sulle dipendenze delle librerie JavaScript sono state molto preziose, anche se ho seguito questa altra strada.

Ho utilizzato this Stack Overflow answer come guida per scrivere la mia funzione per recuperare JSON. Avevo bisogno di recuperare i dati in modo sincrono, quindi ho regolato la funzione con i suggerimenti delineati in this other article.

Alla fine, la mia funzione sembrava così. Spero che aiuti qualcun altro che arriva.

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

Ricorda che questo non funzionerà nei vecchi IE se ne hai bisogno. – blockhead

+0

Grazie per il feedback, @blockhead. Quale parte rompe la compatibilità? La chiamata JSON.parse? –

+0

Ho appena visto che la mia ultima domanda ha avuto risposta in [la risposta] (http://stackoverflow.com/questions/14388452/how-do-i-load-a-json-object-from-a-file-with-ajax/14388512 # 14388512) Mi riferisco sopra. –

Problemi correlati