- Что такое Closure Compiler? Зачем его использовать?
- Чем Closure Compiler отличается от других существующих компрессоров JavaScript?
- Может ли Closure Compiler компилировать JavaScript, встроенный в HTML?
- Могу ли я использовать Closure Compiler вместе с другими минификаторами JavaScript?
- Как отладить JavaScript, создаваемый Closure Compiler?
- Делает ли компилятор какой-либо компромисс между скоростью выполнения моего приложения и размером загружаемого кода?
- Оптимизирует ли компилятор скорость?
- Существуют ли ограничения на размер скомпилированных файлов?
- Доступен ли Closure Compiler для всех платформ?
- Может ли компилятор обрабатывать любой допустимый JavaScript?
- Как Closure Compiler работает с Closure Library?
- Мой код перестаёт работать или компилятор выдаёт ошибки при компиляции с
ADVANCED_OPTIMIZATIONS
. Почему? - Почему в скомпилированных скриптах присутствуют случайные переводы строк?
- В моём исходном коде есть уведомления об авторских правах или текст лицензии с открытым исходным кодом, которые должны присутствовать. Как запретить Closure Compiler удалять этот текст?
- Что такое Closure Compiler? Зачем его использовать?
- Closure Compiler — это инструмент для ускорения загрузки и выполнения JavaScript. Closure Compiler можно использовать для уменьшения размера JavaScript-файлов и повышения их эффективности.
- Чем Closure Compiler отличается от других существующих компрессоров JavaScript?
Как правило, Closure Compiler должен соответствовать или превосходить другие инструменты минимизации кода по уровню сжатия, а также сокращать время загрузки вашего веб-приложения. Кроме того, Closure Compiler может помочь вам обнаружить синтаксические ошибки во время разработки (а не во время тестирования) и выявить потенциально опасные шаблоны кода.
В простом режиме Closure Compiler должен быть эффективнее других инструментов, поскольку он использует анализ, подобный компилятору, для поиска дополнительных способов минимизации размера кода. Например, Closure Compiler может встраивать функции, используемые лишь в редких случаях, повторно использовать имена переменных и предварительно вычислять константные выражения.
В расширенном режиме Closure Compiler также может использовать добавленные вами аннотации типов для поиска труднообнаружимых ошибок.
- Нет. Closure Compiler работает только с файлами, содержащими только JavaScript.
- Могу ли я использовать Closure Compiler вместе с другими минификаторами JavaScript?
Да. Closure Compiler считывает любой корректный код JavaScript и генерирует корректный код JavaScript, поэтому вы можете применить Closure Compiler к файлу JavaScript как до, так и после его обработки другим минификатором.
Помните, что Closure Compiler и другие минификаторы могут иметь свои ожидания относительно входящего кода. Например, минификатор, удаляющий комментарии, может удалить лицензии или информацию об аннотациях, необходимую другому инструменту.
- Как отладить JavaScript, создаваемый Closure Compiler?
- Если ваш скомпилированный код выдаёт ошибки или ведёт себя непредвиденно, вы можете использовать карты исходного кода для отладки проблемы. Карта исходного кода обеспечивает сопоставление скомпилированного и исходного кода, чтобы инструменты разработчика браузера могли отображать ваш исходный код вместо скомпилированного. Чтобы Closure Compiler создал карту исходного кода, передайте флаг
--create_source_map
в командной строке. Например: Затем, если вы используете браузер с поддержкой карт исходного кода (например, Chrome или Firefox), вы можете установить точки останова так же, как для нескомпилированного кода, и инструменты разработчика браузера отобразят соответствующую строку кода в исходном коде. Подробнее об инструментах разработчика Chrome, включая информацию о картах исходного кода, см. в разделе «Отладка JavaScript» .$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
- Делает ли компилятор какой-либо компромисс между скоростью выполнения моего приложения и размером загружаемого кода?
- Да. Любой оптимизирующий компилятор идёт на компромиссы. Некоторые оптимизации размера кода приводят к небольшому снижению скорости. Однако разработчики 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» .