Comunicação com a API Frontend Compiler

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

  1. 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 ou code_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, como alert('hello'). O parâmetro code_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ções import e export com suporte em ECMASCRIPT6.

    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 e ADVANCED_OPTIMIZATIONS. Esse exemplo usa a compilação WHITESPACE_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 e statistics. Este exemplo usa o valor compiled_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 ou xml. Este exemplo usa o valor text, 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 de code_url. Ele usa um compilation_level de WHITESPACE_ONLY, solicita a saída do texto bruto com um output_format de text e solicita um tipo output_info de compiled_code.

  2. 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 de application/x-www-form-urlencoded.
  3. 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.