- Что такое компилятор Closure? Зачем его использовать?
- Чем 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? Зачем его использовать?
- Closure Compiler — это инструмент, ускоряющий загрузку и выполнение JavaScript-файлов. С помощью Closure Compiler можно уменьшить размер JavaScript-файлов и повысить их эффективность.
- Чем Closure Compiler отличается от других существующих JavaScript-компрессоров?
Как правило, Closure Compiler должен обеспечивать сжатие кода на уровне, сопоставимом или превосходящем аналогичные инструменты, а также сокращать время загрузки веб-приложения. Кроме того, Closure Compiler может помочь вам находить синтаксические ошибки на этапе разработки (а не тестирования) и выявлять потенциально опасные фрагменты кода.
В простом режиме Closure Compiler должен показывать лучшие результаты, чем другие инструменты, поскольку он использует анализ, подобный компиляторному, для поиска дополнительных способов минимизации размера кода. Например, Closure Compiler может встраивать функции, используемые лишь в нескольких случаях, повторно использовать имена переменных и предварительно вычислять константные выражения.
В расширенном режиме Closure Compiler также может использовать добавленные вами аннотации типов для поиска труднообнаружимых ошибок.
- Нет. Компилятор Closure работает только с файлами, содержащими исключительно 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 Compiler с библиотекой Closure Library?
- Компилятор Closure предоставляет специальные проверки и оптимизации для кода, использующего библиотеку Closure. Кроме того, служба компилятора Closure может автоматически включать файлы библиотеки Closure. В разделе «Как ориентироваться в Closure» описан синтаксис объявления необходимых частей Closure. Информацию об использовании библиотеки Closure с API см. в справочнике API . Для использования библиотеки Closure с приложением компилятора Closure необходимо сначала загрузить библиотеку Closure . Поддержка библиотеки Closure включена в приложении компилятора по умолчанию.
- Мой код перестаёт работать или компилятор выдаёт ошибки при компиляции с параметром
ADVANCED_OPTIMIZATIONS. Почему? - Использование расширенного режима обычно требует некоторой подготовки и внесения изменений в код. В разделе «Расширенная компиляция и внешние переменные» объясняется, как убедиться, что ваш код работает с
ADVANCED_OPTIMIZATIONS. - Почему в скомпилированных скриптах присутствуют случайные переводы строк?
- Компилятор Closure намеренно добавляет переносы строк примерно каждые 500 символов. Брандмауэры и прокси-серверы иногда повреждают или игнорируют большие файлы JavaScript с очень длинными строками. Добавление переносов строк каждые 500 символов предотвращает эту проблему. Влияние на размер кода незначительно, и компилятор оптимизирует размещение переносов строк, так что увеличение размера кода становится еще меньше при сжатии файлов с помощью gzip. См. также проблему #4106 .
- В моем исходном коде должны присутствовать уведомления об авторских правах или текст лицензии с открытым исходным кодом. Как мне предотвратить удаление этого текста компилятором Closure Compiler?
- Компилятор Closure Compiler поддерживает тег JSDoc
@license. Добавьте тег@licenseк любому комментарию JSDoc, чтобы сохранить комментарий в выходных данных компилятора. Дополнительную информацию см. в разделе «Аннотирование JavaScript для Closure Compiler» .