Optimize JS è una soluzione per l'ottimizzazione dei file JavaScript concepita con lo scopo di velocizzarne l'esecuzione e il parsing consentendo un caricamento più rapido delle pagine Web. Installabile tramite npm, questa libreria offre compatibilità con gli engine JavaScript dei browser Internet più diffusi: V8 per Chrome, Chakra per Microsoft Edge, SpiderMonkey per Firefox e JavaScriptCore su Safari.
Dai test effettuati Optimize JS dovrebbe garantire una incremento delle prestazioni pari ad oltre il 57% in Chome, di quasi il 30% in Edge, di più del 12% in Firefox e di quasi il 6.5% in Safari; chiaramente tali risultati potrebbero cambiare a seconda del framework JavaScript utilizzato. La libreria rappresenta in sostanza uno strumento complementare/alternativo al pre-parsing delle funzioni effettuato dai motori JavaScript prima del passaggio al parsing per il caricamento degli script nel loro complesso.
In sostanza il pre-parsing opera una ricerca degli errori eventualmente presenti nella sintassi JavaScript, evitando il costo in termini di risorse che verrebbe determinato già nella fase iniziale del caricamento di una pagina da un parsing completo. Questa dinamica si basa però sull'assunto che nella maggior parte dei casi buona parte delle funzioni JavaScript non vengono eseguite, in sostanza il browser esegue soltanto un controllo sintattico spostando poi il carico sul full parsing.
In sostanza i browser si limiterebbero a cercare ciò che conoscono determinando un vantaggio limitato a livello di performance.
Optimize JS opera invece tramite il wrapping delle funzioni all'interno di parentesi, dove queste ultime vengono immediatamente invocate attraverso qualsiasi tipo di istruzione (ad esempio function(){}() o !function(){}()) oppure sono passate direttamente come argomenti ad altre funzioni. Il costo in termini di byte aggiuntivi è estremamente limitato, anche se andrebbe comunque considerato per utilizzare la libreria solo quando serve, indipendentemente dallo strumento utilizzato per lo sviluppo (emberJS, jQuery, immutableJS, Lodash).
Via Optimize JS