Communiquer avec l'API Closure Compiler Service

Le service de compilation de fermeture est obsolète et sera supprimé. Envisagez plutôt d'exécuter le compilateur en local.

Présentation

L'API du service Closure Compiler fournit un accès automatisé à la compilation JavaScript de Closure Compiler via une API Web. Alors que l'interface utilisateur de compilateur Closure permet d'utiliser facilement le service de compilation via un formulaire simple sur une page Web, copier le résultat de cette page Web n'est pas la méthode de travail la plus efficace. Avec l'API du service Compilation Closure, vous disposez de la polyvalence nécessaire pour créer vos propres outils et votre propre flux de travail.

Ce tutoriel vous explique comment envoyer du code JavaScript au service Closure Compiler et récupérer la sortie du compilateur. L'exemple utilise le niveau de compilation le plus élémentaire de Closure Compiler, qui se contente de supprimer les commentaires et les espaces de votre code JavaScript.

Dans ce tutoriel, nous partons du principe que vous maîtrisez les bases de JavaScript et de HTTP. Bien qu'elle utilise un script Python pour envoyer du code JavaScript au service Closure Compiler, vous n'avez pas besoin de connaître Python pour suivre cet exemple.

Communiquer avec l'API

  1. Déterminer les paramètres de requête

    Vous interagissez avec le service Closure Compiler en envoyant des requêtes HTTP POST au serveur Closure Compiler. Pour chaque requête, vous devez envoyer au moins les paramètres suivants:

    js_code ou code_url

    La valeur de ce paramètre indique le code JavaScript à compiler. Vous devez inclure au moins l'un de ces paramètres, et vous pouvez inclure les deux. Le paramètre js_code doit être une chaîne contenant du JavaScript, par exemple alert('hello'). Le paramètre code_url doit contenir l'URL d'un fichier JavaScript .js disponible via HTTP.

    Vous pouvez également inclure des paramètres sources nommés au format js_code:path/to/filename.js. Chaque fichier sera créé dans un système de fichiers virtuel, permettant des modules standardisés via les instructions import et export compatibles avec ECMASCRIPT6.

    compilation_level

    La valeur de ce paramètre indique le degré de compression et d'optimisation à appliquer à votre code JavaScript. Il existe trois niveaux de compilation possibles : WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS et ADVANCED_OPTIMIZATIONS. Cet exemple utilise la compilation WHITESPACE_ONLY, qui ne supprime que les commentaires et les espaces.

    La valeur par défaut du paramètre compilation_level est SIMPLE_OPTIMIZATIONS.

    output_info

    La valeur de ce paramètre indique le type d'informations que vous souhaitez obtenir du compilateur. Il existe quatre types de sorties possibles: compiled_code, warnings, errors et statistics. Cet exemple utilise la valeur compiled_code, qui indique au service Closure Compiler de générer la version compressée du code JavaScript qu'il reçoit dans la requête.

    output_format

    Format de sortie du service Compiler Closure. Il existe trois formats de sortie possibles : text, json ou xml. Cet exemple utilise la valeur text, qui génère du texte brut.

    La valeur par défaut du paramètre output_format est text.

    Pour plus d'informations sur ces paramètres obligatoires et des paramètres facultatifs supplémentaires, consultez la documentation de référence de l'API.

    L'exemple de ce tutoriel d'introduction envoie une seule ligne de code JavaScript brut au service Closure Compiler. Il utilise donc js_code au lieu de code_url. Elle utilise un compilation_level de WHITESPACE_ONLY, demande une sortie de texte brut avec un output_format de text et demande un type output_info de compiled_code.

  2. Envoyer une requête par courrier au service Compiler Closure

    Pour obtenir la sortie du service Closure Compiler, envoyez les paramètres que vous avez sélectionnés à l'étape 1 dans une requête POST à l'URL de l'API du service Closure Compiler. Pour ce faire, vous pouvez utiliser un formulaire HTML simple, comme celui de l'API Hello World de Closure Compiler.

    Toutefois, pour utiliser un formulaire de ce type lors du développement, vous devez copier la sortie du navigateur et la coller dans un fichier .js. Si vous écrivez un petit programme pour envoyer la requête au service Closure Compiler, vous pouvez écrire la sortie de Closure Compiler directement dans un fichier. Par exemple, le script Python suivant envoie la requête au service Closure Compiler et écrit la réponse:

    #!/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()
    

    Remarque:Pour reproduire cet exemple, les utilisateurs Windows devront peut-être installer Python. Pour obtenir des instructions sur l'installation et l'utilisation de Python sous Windows, reportez-vous aux questions fréquentes sur Python pour Windows.

    Ce script optimise JavaScript transmis en tant qu'argument de ligne de commande. Collez le code ci-dessus dans un fichier nommé compile.py, modifiez les autorisations du fichier pour le rendre exécutable, puis exécutez la commande suivante:

    $ python compile.py 'alert("hello");// This comment should be stripped'
    

    Cette commande imprime le code compressé à partir de la réponse Closure Compiler:

    alert("hello");
    

    Comme cet exemple utilise la compilation de base, le compilateur ne fait rien d'autre que supprimer le commentaire.

    Voici quelques points à retenir concernant ce script:

    • Les paramètres sont transmis à la méthode de requête de la connexion HTTPS sous la forme d'une chaîne encodée au format URL. Après l'appel de urllib.urlencode, la variable "params" contient la chaîne suivante :
      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
          
      Si vous écrivez votre propre script, le script doit publier du contenu encodé au format URL comme celui-ci.
    • La requête doit toujours comporter l'en-tête Content-type application/x-www-form-urlencoded
  3. Étapes suivantes

    Pour apprendre à utiliser le service afin d'améliorer la compression dans un scénario de développement plus réaliste, passez à la section Compresser des fichiers avec l'API.