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
- 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
oucode_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 exemplealert('hello')
. Le paramètrecode_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 instructionsimport
etexport
compatibles avecECMASCRIPT6
. 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
etADVANCED_OPTIMIZATIONS
. Cet exemple utilise la compilationWHITESPACE_ONLY
, qui ne supprime que les commentaires et les espaces.La valeur par défaut du paramètre
compilation_level
estSIMPLE_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
etstatistics
. Cet exemple utilise la valeurcompiled_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
ouxml
. Cet exemple utilise la valeurtext
, qui génère du texte brut.La valeur par défaut du paramètre
output_format
esttext
.
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 decode_url
. Elle utilise uncompilation_level
deWHITESPACE_ONLY
, demande une sortie de texte brut avec unoutput_format
detext
et demande un typeoutput_info
decompiled_code
. -
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
-
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
É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.