Najczęstsze pytania


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()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).