O serviço do compilador de interdição foi descontinuado e será removido. Considere executar o compilador localmente.
Visão geral
A API de serviço do Frontend Compiler fornece acesso programático à compilação JavaScript closure Compiler por meio de uma API baseada na Web. Embora a IU do Frontend do compilador (em inglês) ofereça uma maneira fácil de usar o serviço do compilador por um formulário simples em uma página da Web, a cópia da saída não é a maneira mais eficiente de trabalhar. Com a API de serviço do closure Compiler, você ganha versatilidade para criar suas próprias ferramentas e criar seu próprio fluxo de trabalho.
Neste tutorial, você vai ver o processo de envio do JavaScript ao serviços de fechamento de fechamento e como receber a saída dele. O exemplo usa o nível mais básico de compilação do Frontend Compiler, que simplesmente remove comentários e espaços em branco do seu JavaScript.
Para seguir este tutorial, é necessário ter familiaridade básica com JavaScript e HTTP. Embora ele use um script Python para enviar JavaScript ao serviço de fechamento do compilador, você não precisa saber Python para seguir o exemplo.
Como se comunicar com a API
- Determinar os parâmetros da solicitação
Você interage com o serviço do Frontend Compiler fazendo solicitações HTTP POST ao servidor Frontend Compiler. Para cada solicitação, é necessário enviar pelo menos os seguintes parâmetros:
js_code
oucode_url
-
O valor desse parâmetro indica o JavaScript que você quer compilar. É necessário incluir pelo menos um desses parâmetros. Você pode incluir ambos. O parâmetro
js_code
precisa ser uma string que contém JavaScript, comoalert('hello')
. O parâmetrocode_url
precisa conter o URL de um arquivo.js
JavaScript disponível por HTTP.Também é possível incluir parâmetros de origem nomeados no formato
js_code:path/to/filename.js
. Cada arquivo será criado em um sistema de arquivos virtual, permitindo módulos padronizados usando as instruçõesimport
eexport
com suporte emECMASCRIPT6
. compilation_level
-
O valor desse parâmetro indica o grau de compactação e otimização a ser aplicado ao JavaScript. Há três níveis possíveis de compilação:
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
eADVANCED_OPTIMIZATIONS
. Esse exemplo usa a compilaçãoWHITESPACE_ONLY
, que apenas remove comentários e espaços em branco.O padrão do parâmetro
compilation_level
éSIMPLE_OPTIMIZATIONS
. output_info
-
O valor desse parâmetro indica o tipo de informação que você quer do compilador. Há quatro tipos possíveis de saída:
compiled_code
,warnings
,errors
estatistics
. Este exemplo usa o valorcompiled_code
, que instrui o serviço de fechamento do compilador para gerar a versão compactada do JavaScript que ele recebe na solicitação. output_format
-
O formato da saída do serviço do Frontend Compiler. Há três formatos de saída possíveis:
text
,json
ouxml
. Este exemplo usa o valortext
, que gera texto bruto.O valor padrão do parâmetro
output_format
étext
.
Para mais informações sobre esses parâmetros obrigatórios e outros parâmetros opcionais, consulte a Referência da API.
O exemplo neste tutorial introdutório envia uma linha do JavaScript bruto para o serviço Frontend Compiler, portanto, ele usa
js_code
em vez decode_url
. Ele usa umcompilation_level
deWHITESPACE_ONLY
, solicita a saída do texto bruto com umoutput_format
detext
e solicita um tipooutput_info
decompiled_code
. -
Faça uma solicitação de postagem para o serviço de interdição de compilação
Para receber a saída do serviço do Frontend Compiler, envie os parâmetros escolhidos na Etapa 1 em uma solicitação POST para o URL da Backfill Compiler API. Uma maneira de fazer isso é com um formulário HTML simples, como o da Hello World da API Frontend Compiler Service.
No entanto, para usar um formulário como esse durante o desenvolvimento, é necessário copiar a saída do navegador e colar em um arquivo .js. Se, em vez disso, você gravar um pequeno programa para enviar a solicitação ao serviço, será possível gravar a saída do Frontend Compiler diretamente em um arquivo. Por exemplo, o script Python a seguir envia a solicitação ao serviço do Frontend Compiler e grava a resposta:
#!/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()
Observação: para reproduzir este exemplo, os usuários do Windows podem precisar instalar o Python. Consulte as Perguntas frequentes sobre o Python para Windows para ver instruções sobre como instalar e usar o Python no Windows.
Esse script otimiza o JavaScript transmitido a ele como um argumento de linha de comando. Cole o código acima em um arquivo chamado
compile.py
, altere as permissões do arquivo para torná-lo executável e execute o comando a seguir:$ python compile.py 'alert("hello");// This comment should be stripped'
Este comando imprime o código compactado da resposta do Frontend Compiler:
alert("hello");
Como esse exemplo usa compilação básica, o compilador não faz nada além de remover o comentário.
Veja a seguir algumas observações sobre esse script:
-
Os parâmetros são transmitidos para o método de solicitação de
HTTPSConnection como uma string codificada em URL. Após a chamada para
urllib.urlencode
, a variável de parâmetros conterá a seguinte string: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
Se você criar seu próprio script, ele precisará publicar conteúdo codificado em URL como este: - A solicitação precisa sempre ter um cabeçalho
Content-type
deapplication/x-www-form-urlencoded
.
-
Os parâmetros são transmitidos para o método de solicitação de
HTTPSConnection como uma string codificada em URL. Após a chamada para
Próximas etapas
Para saber como usar o serviço para melhorar a compactação em um cenário de desenvolvimento mais realista, acesse Como compactar arquivos com a API.