Parte del problema con il semplice concatenamento del file non è il tempo impiegato per il download, è il tempo impiegato per la compilazione di ogni pagina.
Se hai un file di 20.000 linea, e hai solo bisogno di 600 di queste linee per ottenere tutto installato e funzionante (supponendo che tutto è scritto per essere modulare e asincrona, utilizzando qualsiasi modello a tutti per la gestione delle risorse) , quindi risparmierai quello che potrebbe essere mezzo secondo o più, se servi il programma principale ed estendi al bisogno (o su un timer ritardato, servendo grossi pezzi di funzionalità che sono strettamente correlati l'un l'altro).
Il tempo di scaricamento complessivo è più alto.
Il numero complessivo di connessioni HTTP utilizzate è più alto.
Ma il tempo necessario per rendere la pagina visibile all'utente è inferiore.
Il tempo necessario per aggiungere funzionalità di base alla pagina è inferiore.
funzionalità Poi extra può essere trasmesso in streaming in, sia dopo il carico e l'inizializzazione, o just-in-time, as-richiesto dall'utente, e in entrambi i casi, fino a quando il codice che hai trasmesso in streaming in è focalizzata sul fare una cosa, e non sta richiedendo una mezza dozzina di altre dipendenze, il tempo tra la richiesta e l'aggiunta della funzionalità sarà minimo.
RequireJS utilizza un sistema di promessa, in pratica.
Consente di dichiarare le dipendenze in primo piano e di consegnare il codice (come callback) da implementare, dopo che tutte le sue dipendenze sono state gestite.
Se tali dipendenze hanno dipendenze, quindi esse non verranno inizializzate fino a quando non vengono caricate le loro dipendenze.
Se si desidera caricarlo e l'ordine non è importante, non è necessario fornire dipendenze.
La morale generale è che, se si dispone di un sistema in cui tutti i file sono piccoli, il peso complessivo di JS sulla pagina è molto piccolo, bastano poche centinaia di righe per eseguire tutto ciò che si desidera sul pagina ... ... in più, sai dove sono tutte le tue dipendenze, hai un sistema sul server per assicurarti che siano nell'ordine giusto, eccetera (in più hai una buona documentazione, o te ') sei l'unico che tocca questo codice e vivi al suo interno, giorno dopo giorno ... ... quindi non c'è niente di sbagliato nel fare ciò che stai facendo.
Potrebbe non notare alcuna differenza, se il tempo di compilazione è superato dal numero di richieste HTTP effettuate. Ma per le applicazioni complessive che sono lunghe decine (o centinaia) di migliaia di righe, dove è necessaria solo una frazione di quella funzionalità su una singola pagina, ci possono essere grandi risparmi in termini di tempo percepito tra il caricamento della pagina e quando l'app è "pronta" per l'interazione di base da parte dell'utente.
È ancora vero? –
@JitendraVyas - Sì, è praticamente tutto vero. I browser hanno ora la '' defer' e attributi async' per il tag script (che potete leggere [qui] (http://stackoverflow.com/questions/10808109/script-tag-async-defer/10808243#10808243)), che vi darà un certo controllo sui tempi di appena un tag script semplice senza l'utilizzo di un caricatore, ma ci sono ancora dei casi per tutto quanto sopra che utilizzare un caricatore. – jfriend00