Per le tue esigenze di caricamento degli script

Dato che l'utilizzo di JavaScript è salito alle stelle negli ultimi anni, così ha il numero di script che viene caricato in una pagina Web media. Con questi tag script arriva un sacco di bagagli, come il blocco e la mancanza di gestione delle dipendenze.

Oggi vorrei portare la tua attenzione su un numero di caricatori JavaScript, che sono mini toolkit che semplificano in modo significativo il modo in cui aggiungi e carica gli script.


Il problema con i tag Script semplici

Bloccano la pagina

La pagina smette di "accadere" mentre lo script viene scaricato.

File JavaScript caricati utilizzando il copione i tag stanno bloccando per natura. Tutto ciò che accade o il caricamento sulla pagina viene interrotto mentre lo script viene scaricato ed eseguito. E ricorda che questo si applica a ogni tag dello script. Alcuni browser moderni potrebbero permetterti di scaricarli in parallelo, ma il resto della pagina è ancora bloccato dal fare qualcosa di significativo.

Nessun modo semplice per gestire le dipendenze

La mancanza di gestione delle dipendenze è un grosso inconveniente.

Il prossimo arriva il problema della gestione delle dipendenze. Per la tua pagina web media, probabilmente non ne hai bisogno. Controlla se la tua libreria è caricata e vai avanti. Per un'applicazione web non banale, tuttavia, questa non è una soluzione eccezionale. Avrai bisogno di caricare script in modo condizionale in base alle dipendenze. Anche allora, dovrai comunque capire l'ordine in cui sono caricati. Probabilmente puoi farlo manualmente per 3-4 file, ma quando le cose cominciano ad accumularsi, probabilmente stai meglio con una soluzione automatizzata.


Scelte disponibili

L'idea iniziale di questo riepilogo è stata scatenata da un post su Hacker News sulla creazione di un elenco di caricatori di script JavaScript, circa un mese fa. Ho visto l'elenco salire da 3 a un totale di 10 prima di perdere interesse e andare avanti.

Ora che è trascorso un tempo sufficiente, penso che la lista sarà abbastanza massiccia. Sfortunatamente, il mio Google-fu è piuttosto debole e non riesco a trovarlo. Se un utente con gli occhi d'aquila riesce a trovare questo thread, inserisci i commenti qui sotto in modo che possa collegarmi ad esso e, si spera, espandere il mio elenco anche qui.

Questo elenco è tratto dalle raccomandazioni degli sviluppatori di alto livello che utilizzano questi strumenti nelle loro applicazioni.

E per quanto riguarda le mie scelte qui, questa lista rappresenta un superset delle raccomandazioni che si sono susseguite dopo che ho chiesto ad alcune delle community front-end di presentare le soluzioni che stanno utilizzando. Alcune delle soluzioni seguenti possono gestire anche le gestioni delle dipendenze, anche se la maggior parte si limita al semplice caricamento asincrono. Indipendentemente dalle sottigliezze extra, ciascuno degli script qui sotto fa una cosa sola con aplomb - carica JavaScripts con il minimo sforzo.

Quindi, senza ulteriori indugi, e in nessun ordine particolare:


HeadJS

Head JS carica gli script in parallelo, non importa quanti di loro e quale sia il browser. Carica script come immagini. Usa HTML5 e CSS3 in modo sicuro. Target CSS per diversi schermi, percorsi, stati e browser. Falla diventare l'unica sceneggiatura nel TESTO.

Autore: Tero Piirainen

URL del progetto: Qui

Taglia: 6.3 KB

Link correlati:

  • Teoria HeadJS
  • TEST HeadJS

LabJS

LABjs (caricamento e blocco JavaScript) è un caricatore JavaScript on-demand multiuso, in grado di caricare qualsiasi risorsa JavaScript, da qualsiasi posizione, in qualsiasi pagina, in qualsiasi momento. Puoi facilmente specificare quali script hanno dipendenze degli ordini di esecuzione e LABjs garantirà il corretto ordine di esecuzione. Ciò rende LABjs sicuro da utilizzare praticamente per qualsiasi risorsa JavaScript, indipendentemente dal fatto che tu la controlli / l'ospitiamo o no, e se sia indipendente o parte di una più grande struttura di risorse dipendente.

Autore: Kyle Simpson

URL del progetto: Qui

Taglia: 4,7 KB

Link correlati:

  • Github repo
  • Articolo Ajaxiano

RequireJS

RequireJS è un file JavaScript e un caricatore di moduli. È ottimizzato per l'uso in-browser, ma può essere utilizzato in altri ambienti JavaScript, come Rhino e Node. L'uso di un caricatore di script modulare come RequireJS migliorerà la velocità e la qualità del tuo codice.

Autore: James Burke

URL del progetto: Qui

Taglia: 13 KB

Link correlati:

  • Usando con jQuery
  • Github

ControlJS

ControlJS è un modulo JavaScript che gestisce sia gli script inline che gli script esterni, ritarda l'esecuzione degli script fino a dopo il rendering della pagina, consente il download degli script, non l'esecuzione e l'integrazione con semplici modifiche all'HTML e senza modifiche al codice

Autore: Steve Souders

URL del progetto: Qui

Taglia: 3,6 KB

Link correlati:

  • Come guida
  • Menu di esempio

StealJS

Il progetto StealJS è una raccolta di utilità JavaScript basate su comandi e client che facilitano la creazione, l'imballaggio, la condivisione e il consumo di applicazioni JavaScript. Include moduli per la gestione delle dipendenze, la compressione JS, la pulizia e la registrazione.

Autore: Brian Moschel

URL del progetto: Qui

Taglia: 11,4 KB

Link correlati:

  • Forum ufficiale
  • JavaScript MVC Google Group

yepnope

yepnope è un caricatore di risorse condizionale asincrono che è super veloce e consente di caricare solo gli script di cui gli utenti hanno bisogno. Funziona con JavaScript e CSS e ha una suite di test completa in QUnit che puoi eseguire nel tuo set di browser supportati per assicurarti che funzioni.

Autore: Alex Sexton e Ralph Holzmann

URL del progetto: Qui

Taglia: 3,4 KB

Link correlati:

  • Introduzione a yepnope
  • Github repo

Caricatore JS PINF

Il caricatore consente di eseguire il bootstrap di un ambiente CommonJS coerente e all'avanguardia per qualsiasi piattaforma supportata (su server e browser) e quindi è ideale per essere utilizzato come target per il comando commonjs e lo sviluppo di piattaforme multipiattaforma Applicazioni e librerie JavaScript.

Autore: Christoph Dorn

URL del progetto: Qui

Taglia: 22 KB

Link correlati:

  • Presentazione con diapositive
  • Introduzione a PINF

JSLoad

JSLoad è un caricatore di file Javascript che abbiamo scritto per Instructables. Gli dai un insieme di dipendenze e raggruppamenti e carica i file che ti servono, quando il codice di esecuzione ne ha bisogno. La vera utilità di JSLoad è data dalla sua capacità di raggruppare le dipendenze usando i tag.

Autore: Eric Nguyen

URL del progetto: Qui

Taglia: 9,8 KB

Link correlati:

  • JSLoad @ Mindtangle
  • JSLoad @ Instructables

JsDefer

JsDefer offre il caricamento parallelo / seriale basato su definizioni, dipendenza e wrapping rispetto a unwrapped, e se le dipendenze sono definite in file def separati o nello script stesso e l'integrazione con Deferred (come in jQuery 1.5) abilita o semplifica molti scenari d'uso tra molti altri.

Autore: Boris Moore

URL del progetto: Qui

Taglia: 4,7 KB

Link correlati:

  • App demo
  • Alcuni esempi avanzati

JSL (JavaScript Loader)

Funzionalità JSL per il caricamento su richiesta, il caching del browser, il caricamento dinamico asincrono di JavaScript, il caricamento lento e la prevenzione della duplicazione delle sorgenti tra una tonnellata di altre funzionalità.

Autore: Andres Vidal

URL del progetto: Qui

Taglia: 2,1 KB

Link correlati:

  • Come caricare JSL
  • Un semplice esempio

YUI 3 Get

Get Utility fornisce un meccanismo per collegare le risorse di script e css, incluse le risorse tra domini, al DOM dopo il caricamento della pagina.

Autore: Adam Moore

URL del progetto: Qui

Taglia: 17,9 KB

Link correlati:

  • Documentazione API
  • Demos

DominateJS

DominateJS consente di caricare in modo asincrono tutto il codice JavaScript e di rinviare l'esecuzione sequenziale fino al caricamento della pagina. DominateJS mira ad essere una libreria cross-browser e al 100% document.write-safe! Questa è un'evoluzione fortemente modificata (e potente!) Di ControlJS.

Autore: Chris Joel e Jason Benterou

URL del progetto: Qui

Taglia: 48 KB


Load.js

load.js è un lazy-loader micro JS. Costruito in cima a chain.js, consente di caricare in modo lento gli script JS in sequenza o in parallelo e gestire catene di dipendenze complesse.

Autore: Chris O'Hara

URL del progetto: Qui

Taglia: 2 KB

Link correlati:

  • Chain.JS - Dipendenza
  • Copertura a DailyJS

BravoJS

BravoJS è un'implementazione di una bozza proposta per CommonJS Modules / 2.0

Autore: Wes Garland

URL del progetto: Qui

Taglia: 10,7 KB


bootstrap

Bootstrap è una piccola libreria per caricare in modo dinamico i file JavaScript.
Il suo uso principale è l'utilizzo nel codice JS per caricare i file JS solo quando vengono utilizzati.

Autore: Scott Koon

URL del progetto: Qui

Taglia: 1,3 KB


LazyLoad

LazyLoad è una minuscola (solo 904 byte minified e gzip), un'utilità JavaScript senza dipendenza che semplifica il caricamento di file JavaScript e CSS esterni su richiesta.

Laddove possibile, LazyLoad caricherà automaticamente le risorse in parallelo garantendo l'ordine di esecuzione quando si specifica una matrice di URL da caricare. Nei browser che non conservano l'ordine di esecuzione degli script caricati in modo asincrono, LazyLoad caricherà in modo sicuro gli script in modo sequenziale.

Autore: Ryan Grove

URL del progetto: Qui

Taglia: 1,6 KB


curl.js

curl.js è un piccolo, ma molto veloce caricatore asincrono AMD-compatibile. Dimensione attuale: 4,5 KB (2,1 KB di Gzip) utilizzando il compilatore di chiusura di Google.

Se desideri utilizzare curl.js per moduli non AMD (file javascript ordinari), ti consigliamo di utilizzare la versione con js! plug-in integrato. Potresti anche voler creare il modulo domReady. Il caricatore combinato curl + js + domReady è ancora solo 6.1KB (2.7KB gzip).

Autore: John Hann

URL del progetto: Qui

Taglia: 5 KB


$ script.js

$ script.js è un caricatore asincrono di JavaScript e un gestore delle dipendenze con un'impronta leggera sorprendentemente impressionante. Come molti altri caricatori di script, $ script.js consente di caricare risorse di script su richiesta da qualsiasi URL e non bloccare il caricamento di altre risorse, come CSS e immagini.

Autore: Dustin Diaz

URL del progetto: Qui

Taglia: 1,4 KB


NBL.js

NBL.js è un minuscolo script che velocizzerà il caricamento delle pagine HTML caricando tutti i file JavaScript in modo asincrono (in parallelo) con il resto della pagina. Normalmente se includi due o tre script nella tua pagina, il browser attenderà che vengano eseguiti prima che venga visualizzata la tua pagina.

Autore: Berklee

URL del progetto: Qui

Taglia: 971 B

Link correlati:

  • Esempi
  • Github repo

È un involucro!

Mentre ciascuno degli strumenti sopra elencati gestisce il caricamento degli script in modi univoci, assicurati di eseguire i test quando decidi qual è quello giusto per te.

Come ho detto prima, se pensi che un loader dovrebbe essere qui ma non lo è, scrivici una riga qui sotto e aggiorneremo la retata di conseguenza.