- Che cos'è Closure Compiler? Perché dovrei utilizzarlo?
- In che modo Closure Compiler si differenzia dagli altri compressori JavaScript disponibili?
- Closure Compiler può compilare JavaScript incorporato in HTML?
- Posso utilizzare Closure Compiler insieme ad altri minificatori JavaScript?
- Come faccio a eseguire il debug del codice JavaScript prodotto da Closure Compiler?
- Il compilatore fa qualche compromesso tra la velocità di esecuzione e le dimensioni del codice di download della mia applicazione?
- Il compilatore esegue l'ottimizzazione per la velocità?
- Esistono limitazioni alle dimensioni dei file che possono essere compilati?
- Il compilatore Closure è disponibile per tutte le piattaforme?
- Il compilatore può elaborare qualsiasi JavaScript valido?
- Come funziona Closure Compiler con la libreria Closure?
-
Il mio codice smette di funzionare o il compilatore produce
errori quando compilo
con
ADVANCED_OPTIMIZATIONS
. Perché? - Perché ci sono avanzamenti riga casuali negli script compilati?
- Ho avvisi di copyright o testo di licenza open source che devono essere visualizzati nel mio codice sorgente. Come faccio a impedire a Closure Compiler di rimuovere questo testo?
- Che cos'è Closure Compiler? Perché dovrei utilizzarlo?
- Closure Compiler è uno strumento per velocizzare il download e l'esecuzione di JavaScript. Puoi utilizzare Closure Compiler per ridurre le dimensioni dei file JavaScript e renderli più efficienti.
- In che modo Closure Compiler si differenzia dagli altri compressori JavaScript disponibili?
-
In genere, Closure Compiler dovrebbe soddisfare o superare la compressione di altri strumenti di minimizzazione del codice e migliorare i tempi di download della tua applicazione web. Inoltre, Closure Compiler può aiutarti a trovare errori di sintassi durante lo sviluppo (anziché durante i test) e identificare pattern di codice potenzialmente buggati.
In modalità semplice, Closure Compiler dovrebbe essere in grado di fare meglio di altri strumenti perché utilizza un'analisi simile a quella del compilatore per trovare altri modi per ridurre al minimo le dimensioni del codice. Ad esempio, Closure Compiler può incorporare le funzioni utilizzate solo in pochi casi, riutilizzare i nomi delle variabili e precalcolare le espressioni costanti.
In modalità avanzata, Closure Compiler può anche utilizzare le annotazioni dei tipi aggiunte per trovare bug difficili da individuare.
- No. Closure Compiler funziona solo sui file che contengono solo JavaScript.
- Posso utilizzare Closure Compiler insieme ad altri minificatori JavaScript?
-
Sì. Closure Compiler legge qualsiasi codice JavaScript valido e genera codice JavaScript valido, quindi puoi applicare Closure Compiler a un file JavaScript prima o dopo averlo eseguito tramite un altro minifier.
Tieni presente che Closure Compiler e altri minificatori potrebbero avere aspettative sul codice in entrata. Un minifier che rimuove i commenti potrebbe eliminare le licenze o le informazioni sulle annotazioni necessarie a un altro strumento, ad esempio.
- Come faccio a eseguire il debug del codice JavaScript prodotto da Closure Compiler?
-
Se il codice compilato genera errori o presenta un comportamento imprevisto,
puoi utilizzare le mappe delle origini per eseguire il debug del problema. Una mappa di origine fornisce una mappatura
tra il codice compilato e il codice sorgente originale, in modo che gli strumenti
per sviluppatori del browser possano mostrare il codice sorgente originale anziché il codice compilato.
Per fare in modo che Closure Compiler produca una mappa delle origini, passa il
flag
--create_source_map
nella riga di comando. Ad esempio: Poi, se utilizzi un browser che supporta le mappe delle origini (ad esempio Chrome o Firefox), puoi impostare i punti di interruzione proprio come faresti per il codice non compilato e gli strumenti per sviluppatori del browser mostreranno la riga di codice corrispondente nell'origine originale. Per ulteriori informazioni sugli strumenti per sviluppatori di Chrome, incluse informazioni sulle mappe delle origini, consulta Debug di JavaScript.$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
- Il compilatore fa qualche compromesso tra la velocità di esecuzione della mia applicazione e le dimensioni del codice di download?
- Sì. Qualsiasi compilatore di ottimizzazione fa dei compromessi. Alcune ottimizzazioni delle dimensioni introducono piccoli sovraccarichi di velocità. Tuttavia, gli sviluppatori di Closure Compiler hanno prestato attenzione a non introdurre un runtime aggiuntivo significativo. Alcune ottimizzazioni del compilatore riducono persino il tempo di esecuzione (vedi la domanda successiva).
- Il compilatore esegue l'ottimizzazione per la velocità?
- Nella maggior parte dei casi, un codice più piccolo è più veloce, poiché il tempo di download è solitamente il fattore di velocità più importante nelle applicazioni web. Ottimizzazioni che riducono le ridondanze e velocizzano anche il tempo di esecuzione del codice.
- Esistono limitazioni alle dimensioni dei file che possono essere compilati?
- Il servizio web di compilazione ha una dimensione massima dei file, ma l'applicazione di compilazione autonoma no.
- Closure Compiler è disponibile per tutte le piattaforme?
- Il compilatore è scritto in Java, quindi può essere eseguito ovunque sia possibile eseguire Java.
- Il compilatore può elaborare qualsiasi JavaScript valido?
-
Per lo più. Alcuni costrutti JavaScript, tra cui
eval()
ewith()
, possono invalidare le ipotesi su cui si basano le trasformazioni del compilatore. - Quante conoscenze di sviluppo web devo avere per utilizzare Closure Compiler?
- Closure Compiler è uno strumento per lo sviluppo JavaScript, quindi devi sapere come programmare in JavaScript per utilizzare il compilatore. Tuttavia, chiunque utilizzi JavaScript può trarre vantaggio dall'utilizzo di Closure Compiler.
- Come funziona Closure Compiler con la libreria Closure?
- Closure Compiler fornisce controlli e ottimizzazioni speciali per il codice che utilizza la libreria Closure. Inoltre, il servizio Closure Compiler può includere automaticamente i file della libreria Closure. Finding Your Way around Closure descrive la sintassi per dichiarare le parti di Closure di cui hai bisogno. Consulta il riferimento API per informazioni sull'utilizzo della libreria Closure con l'API. Per utilizzare la libreria Closure con l'applicazione Closure Compiler, devi prima scaricare la libreria Closure. Il supporto della libreria Closure è attivato per impostazione predefinita nell'applicazione del compilatore.
-
Il mio codice smette di funzionare o il compilatore produce errori quando
compilo con
ADVANCED_OPTIMIZATIONS
. Perché? -
L'utilizzo della modalità avanzata richiede in genere una preparazione e modifiche al codice. Compilazione avanzata
e variabili esterne spiega come assicurarsi che il codice funzioni
con
ADVANCED_OPTIMIZATIONS
. - Perché nei copioni compilati sono presenti avanzamenti riga casuali?
- Closure Compiler aggiunge intenzionalmente interruzioni di riga ogni 500 caratteri circa. A volte, i firewall e i proxy corrompono o ignorano i file JavaScript di grandi dimensioni con righe molto lunghe. L'aggiunta di interruzioni di riga ogni 500 caratteri impedisce questo problema. La rimozione delle interruzioni di riga non influisce sulla semantica di uno script. L'impatto sulle dimensioni del codice è minimo e il compilatore ottimizza il posizionamento degli interruzioni di riga in modo che la penalità per le dimensioni del codice sia ancora più piccola quando i file vengono compressi con Gzip.
- Ho avvisi di copyright o testo di licenza open source che devono essere visualizzati nel mio codice sorgente. Come faccio a impedire a Closure Compiler di rimuovere questo testo?
-
Closure Compiler supporta il tag JSDoc
@license
. Aggiungi il tag@license
a qualsiasi commento JSDoc per conservare il commento nell'output del compilatore. Per saperne di più, consulta la sezione Annotazione di JavaScript per Closure Compiler.