Questions fréquentes


Qu'est-ce que Closure Compiler ? Pourquoi l'utiliser ?
Le compilateur Closure est un outil permettant d'accélérer le téléchargement et l'exécution de JavaScript. Vous pouvez utiliser Closure Compiler pour réduire la taille de vos fichiers JavaScript et les rendre plus efficaces.
En quoi le Closure Compiler se distingue-t-il des autres compresseurs JavaScript disponibles ?

En général, le compilateur Closure devrait égaler ou dépasser la compression des autres outils de minification de code, et améliorer les temps de téléchargement de votre application Web. De plus, Closure Compiler peut vous aider à trouver les erreurs de syntaxe pendant le développement (plutôt que pendant les tests) et à identifier les modèles de code potentiellement bogués.

En mode Simple, Closure Compiler devrait être plus efficace que les autres outils, car il utilise une analyse de type compilateur pour trouver d'autres moyens de minimiser la taille du code. Par exemple, le Closure Compiler peut intégrer des fonctions qui ne sont utilisées que quelques fois, réutiliser des noms de variables et précalculer des expressions constantes.

En mode avancé, Closure Compiler peut également utiliser les annotations de type que vous avez ajoutées pour trouver des bugs difficiles à repérer.

Le compilateur Closure peut-il compiler du code JavaScript intégré dans du code HTML ?
Non. Le compilateur Closure ne fonctionne que sur les fichiers qui ne contiennent que du code JavaScript.
Puis-je utiliser Closure Compiler avec d'autres outils de minification JavaScript ?

Oui. Closure Compiler lit tout code JavaScript valide et génère du code JavaScript valide. Vous pouvez donc appliquer Closure Compiler à un fichier JavaScript avant ou après l'avoir exécuté avec un autre outil de minification.

N'oubliez pas que Closure Compiler et d'autres outils de minification peuvent avoir des attentes concernant le code entrant. Un outil de minification qui supprime les commentaires peut supprimer des licences ou des informations d'annotation nécessaires à un autre outil, par exemple.

Comment déboguer le code JavaScript produit par Closure Compiler ?
Si votre code compilé génère des erreurs ou présente un comportement inattendu, vous pouvez utiliser les cartes sources pour déboguer le problème. Un mappage source fournit un mappage entre le code compilé et le code source d'origine. Les outils de développement du navigateur peuvent ainsi afficher votre code source d'origine au lieu du code compilé. Pour que Closure Compiler génère une carte source, transmettez l'indicateur --create_source_map sur la ligne de commande. Exemple :
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Ensuite, si vous utilisez un navigateur compatible avec les cartes sources (comme Chrome ou Firefox), vous pouvez définir des points d'arrêt comme vous le feriez pour du code non compilé. Les outils de développement du navigateur afficheront la ligne de code correspondante dans la source d'origine. Pour en savoir plus sur les outils pour les développeurs Chrome, y compris sur les cartes sources, consultez Déboguer JavaScript.
Le compilateur fait-il un compromis entre la vitesse d'exécution et la taille du code de téléchargement de mon application ?
Oui. Tout compilateur d'optimisation fait des compromis. Certaines optimisations de taille entraînent de légers ralentissements. Toutefois, les développeurs de Closure Compiler ont veillé à ne pas introduire de temps d'exécution supplémentaire important. Certaines optimisations du compilateur diminuent même le temps d'exécution (voir la question suivante).
Le compilateur optimise-t-il la vitesse ?
Dans la plupart des cas, un code plus petit est un code plus rapide, car le temps de téléchargement est généralement le facteur de vitesse le plus important dans les applications Web. Les optimisations qui réduisent les redondances accélèrent également le temps d'exécution du code.
La taille des fichiers pouvant être compilés est-elle limitée ?
Le service Web de compilation a une taille de fichier maximale, mais l'application de compilation autonome n'en a pas.
Le Closure Compiler est-il disponible pour toutes les plates-formes ?
Le compilateur est écrit en Java, il peut donc s'exécuter partout où Java s'exécute.
Le compilateur peut-il traiter n'importe quel code JavaScript légal ?
Généralement. Certains éléments de construction JavaScript, y compris eval() et with(), peuvent invalider les hypothèses sur lesquelles reposent les transformations du compilateur.
Quelles connaissances en développement Web dois-je avoir pour utiliser le Closure Compiler ?
Le compilateur Closure est un outil de développement JavaScript. Vous devez donc savoir programmer en JavaScript pour l'utiliser. Toute personne qui utilise JavaScript peut bénéficier de l'utilisation du compilateur Closure.
Comment le compilateur Closure fonctionne-t-il avec la bibliothèque Closure ?
Le compilateur Closure fournit des vérifications et des optimisations spéciales pour le code qui utilise la bibliothèque Closure. De plus, le service Closure Compiler peut inclure automatiquement les fichiers Closure Library. Trouver votre chemin dans Closure décrit la syntaxe pour déclarer les parties de Closure dont vous avez besoin. Pour en savoir plus sur l'utilisation de la bibliothèque Closure avec l'API, consultez la documentation de référence de l'API. Pour utiliser la bibliothèque Closure avec l'application Closure Compiler, vous devez d'abord télécharger la bibliothèque Closure. La compatibilité avec la bibliothèque Closure est activée par défaut dans l'application du compilateur.
Mon code cesse de fonctionner ou le compilateur génère des erreurs lorsque je compile avec ADVANCED_OPTIMIZATIONS. Pourquoi ?
L'utilisation du mode avancé nécessite généralement une certaine préparation et des modifications du code. Compilation avancée et fichiers externes explique comment vous assurer que votre code fonctionne avec ADVANCED_OPTIMIZATIONS.
Pourquoi des retours à la ligne aléatoires apparaissent-ils dans les scripts compilés ?
Le compilateur Closure ajoute intentionnellement des sauts de ligne environ tous les 500 caractères. Les pare-feu et les proxys corrompent ou ignorent parfois les fichiers JavaScript volumineux avec des lignes très longues. Pour éviter ce problème, ajoutez des sauts de ligne tous les 500 caractères. La suppression des sauts de ligne n'a aucune incidence sur la sémantique d'un script. L'impact sur la taille du code est faible, et le compilateur optimise l'emplacement des sauts de ligne afin que la pénalité de taille du code soit encore plus faible lorsque les fichiers sont compressés au format Gzip.
J'ai des mentions de copyright ou du texte de licence Open Source qui doivent apparaître dans mon code source. Comment empêcher Closure Compiler de supprimer ce texte ?
Closure Compiler est compatible avec la balise JSDoc @license. Ajoutez la balise @license à n'importe quel commentaire JSDoc pour conserver le commentaire dans le résultat du compilateur. Pour en savoir plus, consultez Annotating JavaScript for the Closure Compiler (Annoter JavaScript pour le compilateur Closure).