Часто задаваемые вопросы


Что такое Closure Compiler? Зачем его использовать?
Closure Compiler — это инструмент для ускорения загрузки и выполнения JavaScript. Closure Compiler можно использовать для уменьшения размера JavaScript-файлов и повышения их эффективности.
Чем Closure Compiler отличается от других существующих компрессоров JavaScript?

Как правило, Closure Compiler должен соответствовать или превосходить другие инструменты минимизации кода по уровню сжатия, а также сокращать время загрузки вашего веб-приложения. Кроме того, Closure Compiler может помочь вам обнаружить синтаксические ошибки во время разработки (а не во время тестирования) и выявить потенциально опасные шаблоны кода.

В простом режиме Closure Compiler должен быть эффективнее других инструментов, поскольку он использует анализ, подобный компилятору, для поиска дополнительных способов минимизации размера кода. Например, Closure Compiler может встраивать функции, используемые лишь в редких случаях, повторно использовать имена переменных и предварительно вычислять константные выражения.

В расширенном режиме Closure Compiler также может использовать добавленные вами аннотации типов для поиска труднообнаружимых ошибок.

Может ли Closure Compiler компилировать JavaScript, встроенный в HTML?
Нет. Closure Compiler работает только с файлами, содержащими только JavaScript.
Могу ли я использовать Closure Compiler вместе с другими минификаторами JavaScript?

Да. Closure Compiler считывает любой корректный код JavaScript и генерирует корректный код JavaScript, поэтому вы можете применить Closure Compiler к файлу JavaScript как до, так и после его обработки другим минификатором.

Помните, что Closure Compiler и другие минификаторы могут иметь свои ожидания относительно входящего кода. Например, минификатор, удаляющий комментарии, может удалить лицензии или информацию об аннотациях, необходимую другому инструменту.

Как отладить JavaScript, создаваемый Closure Compiler?
Если ваш скомпилированный код выдаёт ошибки или ведёт себя непредвиденно, вы можете использовать карты исходного кода для отладки проблемы. Карта исходного кода обеспечивает сопоставление скомпилированного и исходного кода, чтобы инструменты разработчика браузера могли отображать ваш исходный код вместо скомпилированного. Чтобы Closure Compiler создал карту исходного кода, передайте флаг --create_source_map в командной строке. Например:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Затем, если вы используете браузер с поддержкой карт исходного кода (например, Chrome или Firefox), вы можете установить точки останова так же, как для нескомпилированного кода, и инструменты разработчика браузера отобразят соответствующую строку кода в исходном коде. Подробнее об инструментах разработчика Chrome, включая информацию о картах исходного кода, см. в разделе «Отладка JavaScript» .
Делает ли компилятор какой-либо компромисс между скоростью выполнения моего приложения и размером загружаемого кода?
Да. Любой оптимизирующий компилятор идёт на компромиссы. Некоторые оптимизации размера кода приводят к небольшому снижению скорости. Однако разработчики Closure Compiler постарались не увеличивать значительное время выполнения. Некоторые оптимизации компилятора даже сокращают время выполнения (см. следующий вопрос).
Оптимизирует ли компилятор скорость?
В большинстве случаев код меньшего размера означает более быстрый код, поскольку время загрузки обычно является наиболее важным фактором скорости веб-приложений. Оптимизации, уменьшающие избыточность, также ускоряют выполнение кода.
Существуют ли ограничения на размер скомпилированных файлов?
Веб-сервис компиляции имеет ограничение на максимальный размер файла, но автономное приложение компилятора — нет.
Доступен ли Closure Compiler для всех платформ?
Компилятор написан на Java, поэтому он может работать везде, где работает Java.
Может ли компилятор обрабатывать любой допустимый JavaScript?
В основном. Некоторые конструкции JavaScript, включая eval() и with() , могут сделать недействительными предположения, на которых основаны преобразования компилятора.
Насколько хорошо мне нужно знать веб-разработку, чтобы использовать Closure Compiler?
Closure Compiler — это инструмент для разработки на JavaScript, поэтому для его использования вам необходимо уметь программировать на JavaScript. Однако любой, кто использует JavaScript, может получить от него пользу.
Как Closure Compiler работает с Closure Library?
Closure Compiler обеспечивает специальные проверки и оптимизацию кода, использующего Closure Library. Кроме того, служба Closure Compiler может автоматически включать файлы Closure Library. В разделе « Finding Your Way around Closure» описывается синтаксис объявления необходимых частей Closure. Сведения об использовании Closure Library с API см. в справочнике по API. Чтобы использовать Closure Library с приложением Closure Compiler, необходимо сначала загрузить Closure Library . Поддержка Closure Library включена в приложении компилятора по умолчанию.
Мой код перестаёт работать или компилятор выдаёт ошибки при компиляции с ADVANCED_OPTIMIZATIONS . Почему?
Использование расширенного режима обычно требует некоторой подготовки и внесения изменений в код. В разделе «Расширенная компиляция и внешние компоненты» объясняется, как обеспечить работу кода с ADVANCED_OPTIMIZATIONS .
Почему в скомпилированных скриптах присутствуют случайные переводы строк?
Компилятор Closure Compiler намеренно добавляет переносы строк примерно каждые 500 символов. Брандмауэры и прокси-серверы иногда повреждают или игнорируют большие файлы JavaScript с очень длинными строками. Добавление переносов строк каждые 500 символов предотвращает эту проблему. Удаление переносов строк не влияет на семантику скрипта. Влияние на размер кода незначительно, и компилятор оптимизирует размещение переносов строк, так что потери в размере кода становятся ещё меньше при сжатии файлов с помощью gzip.
В моём исходном коде есть уведомления об авторских правах или текст лицензии с открытым исходным кодом, которые должны присутствовать. Как запретить Closure Compiler удалять этот текст?
Closure Compiler поддерживает тег @license для JSDoc. Добавьте тег @license к любому комментарию JSDoc, чтобы сохранить его в выводе компилятора. Подробнее см. в статье «Аннотирование JavaScript для Closure Compiler» .