Служба компилятора закрытия устарела и будет удалена. Вместо этого рассмотрите возможность локального запуска компилятора.
Обзор
API службы Closure Compiler обеспечивает программный доступ к компиляции JavaScript Closure Compiler через веб-API. Хотя пользовательский интерфейс Closure Compiler предоставляет простой способ использования службы компилятора через простую форму на веб-странице, копирование выходных данных с этой веб-страницы — не самый эффективный способ работы. С API-интерфейсом службы Closure Compiler вы получаете универсальность для создания собственных инструментов и создания собственного рабочего процесса.
В этом учебном пособии вы познакомитесь с процессом отправки JavaScript в службу компилятора Closure и получения обратно выходных данных компилятора Closure. В примере используется самый базовый уровень компиляции Closure Compiler, который просто удаляет комментарии и пробелы из вашего JavaScript.
В этом руководстве предполагается, что у вас есть базовые знания JavaScript и HTTP. Хотя он использует скрипт Python для отправки JavaScript в службу Closure Compiler, вам не нужно знать Python, чтобы следовать этому примеру.
Как общаться с API
- Определите параметры запроса
Вы взаимодействуете со службой Closure Compiler, отправляя HTTP-запросы POST на сервер Closure Compiler. С каждым запросом вы должны отправлять как минимум следующие параметры:
-
js_code
илиcode_url
Значение этого параметра указывает JavaScript, который вы хотите скомпилировать. Вы должны включить хотя бы один из этих параметров, а можете включить оба. Параметр
js_code
должен быть строкой, содержащей JavaScript, например,alert('hello')
. Параметрcode_url
должен содержать URL-адрес файла JavaScript.js
, доступного через HTTP.Вы также можете включить именованные исходные параметры в форме
js_code:path/to/filename.js
. Каждый файл будет создан в виртуальной файловой системе, позволяющей стандартизировать модули с помощью операторовimport
иexport
, поддерживаемых вECMASCRIPT6
.-
compilation_level
Значение этого параметра указывает степень сжатия и оптимизации вашего JavaScript. Существует три возможных уровня компиляции:
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
иADVANCED_OPTIMIZATIONS
. В этом примере используется компиляцияWHITESPACE_ONLY
, которая просто удаляет комментарии и пробелы.Параметр уровня
compilation_level
по умолчанию имеет значениеSIMPLE_OPTIMIZATIONS
.-
output_info
Значение этого параметра указывает тип информации, которую вы хотите получить от компилятора. Существует четыре возможных типа вывода:
compiled_code
,warnings
,errors
иstatistics
. В этом примере используетсяcompiled_code
, которое сообщает службе Closure Compiler вывести сжатую версию JavaScript, которую он получает в запросе.-
output_format
Формат выходных данных службы Closure Compiler. Существует три возможных формата вывода:
text
,json
илиxml
. В этом примере используется значениеtext
, которое выводит необработанный текст.Параметр
output_format
по умолчанию имеет значениеtext
.
Дополнительные сведения об этих обязательных параметрах и дополнительных необязательных параметрах см. в справочнике по API .
Пример в этом вводном руководстве просто отправляет одну строку необработанного кода JavaScript в службу Closure Compiler, поэтому он использует
js_code
вместоcode_url
. Он использует уровеньcompilation_level
WHITESPACE_ONLY
, запрашивает необработанный текстовый вывод сoutput_format
text
и запрашивает типoutput_info
дляcompiled_code
. -
- Сделать почтовый запрос к службе компилятора закрытия
Чтобы получить выходные данные службы Closure Compiler, отправьте параметры, выбранные на шаге 1, в запросе POST на URL-адрес API службы Closure Compiler. Один из способов сделать это — использовать простую HTML-форму, подобную той, что используется в Hello World of the Closure Compiler Service API .
Однако, чтобы использовать подобную форму во время разработки, вам придется скопировать вывод из браузера и вставить его в файл .js. Если вместо этого вы напишите небольшую программу для отправки запроса в службу Closure Compiler, вы можете записать вывод Closure Compiler прямо в файл. Например, следующий скрипт Python отправляет запрос в службу Closure Compiler и записывает ответ:
#!/usr/bin/python2.4 import httplib, urllib, sys # Define the parameters for the POST request and encode them in # a URL-safe format. params = urllib.urlencode([ ('js_code', sys.argv[1]), ('compilation_level', 'WHITESPACE_ONLY'), ('output_format', 'text'), ('output_info', 'compiled_code'), ]) # Always use the following value for the Content-type header. headers = { "Content-type": "application/x-www-form-urlencoded" } conn = httplib.HTTPSConnection('closure-compiler.appspot.com') conn.request('POST', '/compile', params, headers) response = conn.getresponse() data = response.read() print data conn.close()
Примечание. Чтобы воспроизвести этот пример, пользователям Windows может потребоваться установить Python. Инструкции по установке и использованию Python в Windows см. в FAQ по Python для Windows.
Этот скрипт оптимизирует JavaScript, переданный ему в качестве аргумента командной строки. Вставьте приведенный выше код в файл с именем
compile.py
, измените права доступа к файлу, чтобы сделать его исполняемым, и выполните следующую команду:$ python compile.py 'alert("hello");// This comment should be stripped'
Эта команда выводит сжатый код из ответа Closure Compiler:
alert("hello");
Поскольку в этом примере используется базовая компиляция, компилятор не делает ничего, кроме удаления комментария.
Вот несколько замечаний по этому сценарию:
- Параметры передаются в метод запроса HTTPSConnection в виде строки в кодировке URL. После вызова
urllib.urlencode
переменная params содержит следующую строку:js_code=alert%28%22hello%22%29%3B%2F%2F+This+comment+should+be+stripped&output_info=compiled_code&out=text&compilation_level=WHITESPACE_ONLY
Если вы пишете свой собственный сценарий, сценарий должен публиковать содержимое в кодировке URL, подобное этому. - Запрос всегда должен иметь заголовок
Content-type
application/x-www-form-urlencoded
- Параметры передаются в метод запроса HTTPSConnection в виде строки в кодировке URL. После вызова
Следующие шаги
Чтобы научиться использовать сервис для улучшения сжатия в более реалистичном сценарии разработки, перейдите к разделу «Сжатие файлов с помощью API» .