Domande frequenti
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
-
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.
-
Closure Compiler può compilare JavaScript incorporato in HTML?
-
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:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
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.
-
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()
e with()
, 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.
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-26 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-26 UTC."],[[["\u003cp\u003eThe Closure Compiler is a tool for making JavaScript download and run faster by reducing file size and improving efficiency.\u003c/p\u003e\n"],["\u003cp\u003eIt offers greater compression than standard minifiers and helps identify syntax errors and potential bugs during development.\u003c/p\u003e\n"],["\u003cp\u003eThe Closure Compiler works with any valid JavaScript and can be used alongside other minifiers for enhanced optimization.\u003c/p\u003e\n"],["\u003cp\u003eSource maps enable debugging of compiled code by providing a mapping back to the original source.\u003c/p\u003e\n"],["\u003cp\u003eWhile prioritizing download speed, the compiler also performs optimizations to enhance execution speed without significant runtime overhead.\u003c/p\u003e\n"]]],[],null,["# Frequently Asked Questions\n\n- [What is the Closure Compiler? Why should I use it?](#what)\n- [How is the Closure Compiler different\n from the other JavaScript compressors that are out there?](#how-different)\n- [Can the Closure Compiler compile JavaScript that's embedded in HTML?](#tags)\n- [Can I use the Closure Compiler together with other JavaScript\n minifiers?](#other-minifiers)\n- [How can I debug the JavaScript that the Closure Compiler produces?](#sourcemaps)\n- [Does the compiler make any trade-off between my application's\n execution speed and download code size?](#tradeoffs)\n- [Does the compiler optimize for speed?](#speed)\n- [Are there any restrictions on the size of the files that can be compiled?](#size-restrictions)\n- [Is the Closure Compiler available for all platforms?](#platforms)\n- [Can the Compiler process any legal JavaScript?](#restrictions)\n- [How does the Closure Compiler work with\n the Closure Library?](#how-closure)\n- [My code stops working or the Compiler produces\n errors when I compile\n with `ADVANCED_OPTIMIZATIONS`. Why?](#advanced)\n- [Why are there random line feeds in\n compiled scripts?](#linefeeds)\n- [I have copyright notices or open source license\n text that must appear in my source code. How do I keep the Closure\n Compiler from stripping this text out?](#license)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\nWhat is the Closure Compiler? Why should I use it?\n:\n The Closure Compiler is a tool for making JavaScript download and\n run faster. You can use the Closure Compiler to reduce the size of\n your JavaScript files and to make them more efficient.\n\n\nHow is the Closure Compiler different from the other JavaScript\ncompressors that are out there?\n\n: Generally, the Closure Compiler should meet or exceed the compression\n of other code minification tools, and improve download times for your\n web application. In addition, the Closure Compiler can help you\n find syntax errors during development (rather than during testing)\n and identify potentially buggy code patterns.\n\n In Simple mode, Closure Compiler should be able to do better than\n other tools because it uses compiler-like analysis to find additional\n ways to minimize code size. For example, the Closure Compiler can\n inline functions that are used in only a few occurrences, reuse\n variable names, and pre-compute constant expressions.\n\n In Advanced mode, Closure Compiler can also use your added type\n annotations to find hard-to-spot bugs.\n\n\nCan the Closure Compiler compile JavaScript that's embedded in HTML?\n:\n No. The Closure Compiler works only on files that contain only JavaScript.\n\n\nCan I use the Closure Compiler together with other JavaScript\nminifiers?\n\n: Yes. Closure Compiler reads in any valid JavaScript and generates\n valid JavaScript, so you can apply the Closure Compiler to a\n JavaScript file either before or after you run the file through a\n different minifier.\n\n Remember that Closure Compiler and other minifiers might have\n expectations about the incoming code. A minifier that strips\n comments may remove licenses or annotation information needed by\n another tool, for example.\n\n\nHow can I debug the JavaScript that the Closure Compiler produces?\n:\n If your compiled code is throwing errors or exhibiting unexpected behavior,\n you can use Source Maps to debug the issue. A source map provides a mapping\n between the compiled code and the original source code so that the browser's\n developer tools can show you your original source code instead of the compiled code.\n To make the Closure Compiler produce a source map, pass the\n `--create_source_map` flag on the command line. For example: \n\n ```\n $ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js\n ```\n\n Then, if you're using a browser that supports Source Maps (such as Chrome\n or Firefox), you can set breakpoints just as you would for uncompiled code,\n and the browser's developer tools will show the corresponding line of code\n in the original source. For more information about Chrome's developer tools, including\n information about source maps, see\n [Debugging JavaScript](https://developers.google.com/chrome-developer-tools/docs/javascript-debugging).\n\n\nDoes the compiler make any trade-off between my application's\nexecution speed and download code size?\n:\n Yes. Any optimizing compiler makes trade-offs. Some size\n optimizations do introduce small speed overheads. However, the\n Closure Compiler's developers have been careful not to introduce\n significant additional runtime. Some of the compiler's\n optimizations even decrease runtime (see next question).\n\n\nDoes the compiler optimize for speed?\n:\n In most cases smaller code is faster code, since download time is usually the most important speed factor in web applications. Optimizations that\n reduce redundancies speed up the run time of code as well.\n\n\nAre there any restrictions on the size of the files that can be compiled?\n:\n The compilation web service has a maximum file size, but the\n standalone compiler application does not.\n\n\nIs the Closure Compiler avalable for all platforms?\n:\n The compiler is written in Java, so it can run anywhere Java runs.\n\n\nCan the Compiler process any legal JavaScript?\n:\n Mostly. Some JavaScript constructs, including `eval()`\n and `with()`, can invalidate assumptions on which the\n compiler's transformations are based.\n\n\nHow much do I need to know about web development to use the\nClosure Compiler?\n:\n The Closure Compiler is a tool for JavaScript development, so you\n do need to know how to program in JavaScript to use the\n compiler. But anyone who uses JavaScript can benefit from using\n the Closure Compiler.\n\n\nHow does the Closure Compiler work with the Closure Library?\n:\n The Closure Compiler provides special checks and optimizations for\n code that uses the Closure Library. In addition, the Closure\n Compiler service can automatically include Closure Library\n files. [Finding\n Your Way around Closure](/closure/library/docs/introduction#deps) describes the syntax for declaring the\n parts of Closure that you need. See\n the [API\n reference](/closure/compiler/docs/api-ref#closure) for information on using the Closure Library with the\n API. To use the Closure Library with the Closure Compiler\n application you must\n first [download\n the Closure Library](https://github.com/google/closure-library). Support for the Closure Library is\n enabled in the compiler application by default.\n\n\nMy code stops working or the Compiler produces errors when I\ncompile with `ADVANCED_OPTIMIZATIONS`. Why?\n:\n Using Advanced mode usually requires some preparation and code\n changes. [Advanced Compilation\n and Externs](/closure/compiler/docs/api-tutorial3) explains how to make sure your code works\n with `ADVANCED_OPTIMIZATIONS`.\n\n\nWhy are there random line feeds in compiled scripts?\n:\n The Closure Compiler intentionally adds line breaks every 500\n characters or so. Firewalls and proxies sometimes corrupt or\n ignore large JavaScript files with very long lines. Adding line\n breaks every 500 characters prevents this problem. Removing the\n line breaks has no effect on a script's semantics. The impact on code size is small, and the Compiler\n optimizes line break placement so that the code size penalty is even smaller when files are gzipped.\n\n\nI have copyright notices or open source\nlicense text that must appear in my source code. How do I keep the\nClosure Compiler from stripping this text out?\n:\n Closure Compiler supports the JSDoc `@license` tag. Add the\n `@license` tag to any JSDoc comment to preserve the\n comment in the compiler\n output. See [Annotating\n JavaScript for the Closure Compiler](/closure/compiler/docs/js-for-compiler#tag-license) for more information."]]