Scegliere un JavaScript Async-Loader [chiuso]

9

Ho esaminato vari caricatori di risorse asincroni e non sono sicuro di quale utilizzare ancora. Dove lavoro, abbiamo disparati sforzi di gruppo i cui moduli di classe possono utilizzare versioni diverse di jQuery (ecc.). Pertanto, anche le dipendenze nidificate possono essere diverse. Non ho alcun controllo su questo, quindi questo significa che ho bisogno di caricare dinamicamente le risorse che possono utilizzare versioni alternative della stessa libreria.

Pertanto, ecco i miei requisiti:

  1. Carica la risorsa JavaScript e CSS file in modo asincrono.
  2. Gestisci ordine di dipendenza e dipendenze annidate tra versioni.
  3. Rileva se una risorsa è già caricato.
  4. deve consentire il caricamento tra domini (CDN)
  5. (facoltativo) Consentiteci di scaricare a risorsa.

Ho visto:

Potrei essere in grado di simulare personalmente questi requisiti caricando le versioni in variabili e spartiti con nomi propri usando un array per tenere traccia di ciò che è già caricato ... ma (si spera) qualcuno lo abbia già inventato.

Quindi le mie domande sono:

  • Quali usi? E perché?
  • Ci sono altri che i miei soddisfano requisiti completi?
  • Quale trovi più eloquente e più facile da lavorare? E perché?

UPDATE:
Per chi fosse interessato, ho provato tutte le librerie AMD sopra (e altre ancora). Alla fine, sono andato con RequireJS . È solo più pulito e più semplice nel complesso ... e sono felice di usarlo.

    
posta Prisoner ZERO 16.05.2011 - 16:59
fonte

3 risposte

7

Ho usato RequireJS su progetti seri, e lo adoro, ma non è destinato a essere un caricatore asincrono. In realtà è pensato per essere un sistema modulare. Il caricamento asincrono è fornito in servizio a quell'obiettivo. Può essere spinto per soddisfare qualsiasi tua esigenza, ma i suoi servizi di caricamento sono progettati per caricare moduli, non file arbitrari.

Carica i file di risorse JavaScript e CSS in modo asincrono : Requirejs carica tutti i moduli necessari utilizzando l'iniezione di tag script, in modo asincrono.

Gestisci l'ordine delle dipendenze e le dipendenze nidificate tra le versioni : Qui è dove RequireJS brilla. I moduli possono dichiarare dipendenze su altri moduli e l'ordine di caricamento verrà estrapolato da tale dichiarazione di dipendenza. C'è anche un plugin per gli ordini, che può forzare l'ordine sulle dipendenze.

Rileva se una risorsa è già caricata : Requirejs caricherà un modulo solo una volta.

Deve consentire il caricamento tra domini (CDN) : questo è possibile, ma richiede qualche configurazione; Puoi impostare un URL specifico per ogni modulo e questo sostituirà il percorso predefinito, quindi puoi impostarlo su un CDN.

RequireJS funzionerà al meglio se si scrivono moduli utilizzando il suo formato ed è meno efficace se lo si utilizza per caricare javascript non elaborato.

Fornisce anche un processo di compilazione che unirà i tuoi moduli in un unico file per la produzione.

    
risposta data 25.06.2011 - 18:05
fonte
3

In teoria potresti semplicemente tenere un elenco di script già caricati e creare una funzione che carichi gli script che non sono ancora stati caricati.

link

    
risposta data 17.05.2011 - 15:44
fonte
2

Se stai guardando RequireJS e vuoi dipendere dai file CSS, puoi eseguire il checkout del plugin CSSP RequireJS :

CSS with Padding. This project implements a plugin for the RequireJS project that allows modules to list CSS files as dependencies. This allows RequireJS to wait until specific style rules are known to be in effect before it releases the JavaScript module to be evaluated. This would be useful if, for example, if your JavaScript module required certain CSS rules, defined in a separate file, to be applied to the DOM before it could be initialized.

    
risposta data 23.09.2011 - 14:45
fonte

Leggi altre domande sui tag