Najczęstsze pytania
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
-
Co to jest kompilator Closure? Dlaczego warto z niej korzystać?
-
Kompilator Closure to narzędzie, które przyspiesza pobieranie i uruchamianie JavaScriptu. Możesz użyć kompilatora Closure, aby zmniejszyć rozmiar plików JavaScript i zwiększyć ich wydajność.
-
Czym kompilator Closure różni się od innych kompresorów JavaScript?
-
Zwykle kompilator Closure Compiler powinien zapewniać kompresję co najmniej taką jak inne narzędzia do minifikacji kodu i skracać czas pobierania aplikacji internetowej. Dodatkowo kompilator Closure Compiler może pomóc Ci w znalezieniu błędów składni podczas tworzenia (a nie podczas testowania) i zidentyfikowaniu potencjalnie wadliwych wzorców kodu.
W trybie prostym kompilator Closure Compiler powinien działać lepiej niż inne narzędzia, ponieważ wykorzystuje analizę podobną do kompilatora, aby znaleźć dodatkowe sposoby na zminimalizowanie rozmiaru kodu. Na przykład kompilator Closure Compiler może wstawiać funkcje używane tylko w kilku miejscach, ponownie wykorzystywać nazwy zmiennych i wstępnie obliczać wyrażenia stałe.
W trybie zaawansowanym kompilator Closure Compiler może też używać dodanych przez Ciebie adnotacji typu do znajdowania trudnych do wykrycia błędów.
-
Czy kompilator Closure może kompilować kod JavaScript osadzony w HTML?
-
Nie. Kompilator Closure działa tylko na plikach zawierających wyłącznie kod JavaScript.
-
Czy mogę używać kompilatora Closure Compiler razem z innymi narzędziami do minimalizowania kodu JavaScript?
-
Tak. Kompilator Closure odczytuje dowolny prawidłowy kod JavaScript i generuje prawidłowy kod JavaScript, więc możesz zastosować go do pliku JavaScript przed lub po uruchomieniu pliku w innym programie do minimalizacji kodu.
Pamiętaj, że kompilator Closure Compiler i inne narzędzia do minifikacji mogą mieć określone wymagania dotyczące kodu wejściowego. Minifikator, który usuwa komentarze, może na przykład usunąć licencje lub informacje o adnotacjach potrzebne innemu narzędziu.
-
Jak debugować kod JavaScript wygenerowany przez kompilator Closure Compiler?
-
Jeśli skompilowany kod zgłasza błędy lub zachowuje się w nieoczekiwany sposób, możesz użyć map źródłowych, aby rozwiązać problem. Mapa źródeł zapewnia mapowanie między skompilowanym kodem a oryginalnym kodem źródłowym, dzięki czemu narzędzia deweloperskie przeglądarki mogą wyświetlać oryginalny kod źródłowy zamiast skompilowanego.
Aby kompilator Closure Compiler wygenerował mapę źródła, przekaż flagę
--create_source_map
w wierszu poleceń. Na przykład:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Jeśli używasz przeglądarki obsługującej mapy źródła (np. Chrome lub Firefox), możesz ustawiać punkty przerwania tak samo jak w przypadku nieskompilowanego kodu, a narzędzia dla programistów w przeglądarce będą wyświetlać odpowiedni wiersz kodu w oryginalnym źródle. Więcej informacji o narzędziach deweloperskich w Chrome, w tym o mapach źródła, znajdziesz w artykule Debugowanie kodu JavaScript.
-
Czy kompilator dokonuje kompromisu między szybkością wykonywania aplikacji a rozmiarem kodu do pobrania?
-
Tak. Każdy kompilator optymalizujący dokonuje kompromisów. Niektóre optymalizacje rozmiaru powodują niewielkie obciążenie szybkości. Deweloperzy kompilatora Closure Compiler starali się jednak nie wprowadzać znacząco dłuższego czasu działania. Niektóre optymalizacje kompilatora nawet skracają czas działania (patrz następne pytanie).
-
Czy kompilator optymalizuje kod pod kątem szybkości?
-
W większości przypadków mniejszy kod jest szybszy, ponieważ czas pobierania jest zwykle najważniejszym czynnikiem wpływającym na szybkość działania aplikacji internetowych. Optymalizacje, które zmniejszają nadmiarowość, również przyspieszają działanie kodu.
-
Czy istnieją ograniczenia dotyczące rozmiaru plików, które można skompilować?
-
Usługa internetowa kompilacji ma maksymalny rozmiar pliku, ale
samodzielna aplikacja kompilatora nie ma takiego ograniczenia.
-
Czy kompilator Closure jest dostępny na wszystkich platformach?
-
Kompilator jest napisany w Javie, więc może działać wszędzie tam, gdzie działa Java.
-
Czy kompilator może przetwarzać dowolny prawidłowy kod JavaScript?
-
W większości. Niektóre konstrukcje JavaScript, w tym
eval()
i with()
, mogą unieważnić założenia, na których opierają się przekształcenia kompilatora.
-
Jaką wiedzę o tworzeniu stron internetowych muszę mieć, aby korzystać z kompilatora Closure Compiler?
-
Kompilator Closure to narzędzie do tworzenia aplikacji w JavaScript, więc aby z niego korzystać, musisz znać ten język programowania. Jednak każdy, kto używa JavaScriptu, może skorzystać z kompilatora Closure Compiler.
-
Jak kompilator Closure Compiler współpracuje z biblioteką Closure Library?
-
Kompilator Closure Compiler zapewnia specjalne sprawdzanie i optymalizację kodu, który korzysta z biblioteki Closure Library. Usługa kompilatora Closure może też automatycznie uwzględniać pliki biblioteki Closure. W sekcji Finding
Your Way around Closure opisana jest składnia deklarowania części Closure, których potrzebujesz. Informacje o używaniu biblioteki Closure z interfejsem API znajdziesz w dokumentacji interfejsu API. Aby używać Biblioteki Closure z aplikacją kompilatora Closure, musisz najpierw pobrać Bibliotekę Closure. Obsługa biblioteki Closure jest domyślnie włączona w aplikacji kompilatora.
-
Mój kod przestaje działać lub kompilator generuje błędy, gdy kompiluję go za pomocą
ADVANCED_OPTIMIZATIONS
. Dlaczego?
-
Korzystanie z trybu zaawansowanego zwykle wymaga przygotowania i wprowadzenia zmian w kodzie. W artykule Zaawansowana kompilacja i pliki externs znajdziesz informacje o tym, jak sprawdzić, czy Twój kod działa z
ADVANCED_OPTIMIZATIONS
.
-
Dlaczego w skompilowanych skryptach występują losowe znaki końca wiersza?
- Kompilator Closure Compiler celowo dodaje podziały wierszy co około 500 znaków. Zapory sieciowe i serwery proxy czasami uszkadzają lub ignorują duże pliki JavaScript z bardzo długimi wierszami. Dodanie podziału wiersza co 500 znaków zapobiega temu problemowi. Usunięcie znaków podziału wiersza nie ma wpływu na semantykę skryptu. Wpływ na rozmiar kodu jest niewielki, a kompilator optymalizuje umieszczanie znaków podziału wiersza, dzięki czemu po skompresowaniu plików za pomocą gzipa kara za rozmiar kodu jest jeszcze mniejsza.
-
W kodzie źródłowym muszą się pojawić informacje o prawach autorskich lub tekst licencji open source. Jak zapobiec usunięciu tego tekstu przez kompilator Closure Compiler?
-
Kompilator Closure obsługuje tag JSDoc
@license
. Dodaj tag @license
do dowolnego komentarza JSDoc, aby zachować komentarz w danych wyjściowych kompilatora. Więcej informacji znajdziesz w artykule Annotating JavaScript for the Closure Compiler (Adnotacje w JavaScript na potrzeby kompilatora Closure).
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-26 UTC.
[null,null,["Ostatnia aktualizacja: 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."]]