38 votes

Compilateur Google Closure avec applications jQuery

J'ai beaucoup de temps investi dans jquery et une grande application construite avec elle. Récemment, j'ai revu Google Fermeture de la Bibliothèque, mais à ce moment la trouve pas aussi élégant comme jquery. Je crois qu'il peut avoir un certain potentiel et regardez-y de plus, mais pour l'instant j'ai l'intention de continuer à utiliser jQuery mon framework.

Cependant, je suis extrêmement impressionné par Google Closure compiler. J'aimerais commencer à l'utiliser pendant le processus de génération de ma demande. Malheureusement, il n'est pas très clair comment il sera facile à utiliser pour les projets qui ne respectent pas le standard de Google Fermeture des normes.

Existe-il des pratiques exemplaires ou de bonnes ressources sur le développement de jquery-les projets et l'aide de Google Closure compiler? Par exemple:

  1. Est-il judicieux de compiler jquery et jquery-ui avec elle, ou devrais-je continuer pointant vers ces ressources sur le google CA? Je suis sûr que mon jquery et jquery-ui sera moindre puisque je n'utilise pas toutes les fonctions de la bibliothèques, mais pointant vers un CA augmente les chances que le fichier est déjà dans un visiteur du cache.

  2. Mon application est divisée en plusieurs fichiers, avec un fichier par fonction. Je tiens à les combiner dans un ordre précis et rapetisser dans un fichier par la section sur mon site. J'aimerais automatiser ce processus.

  3. Actuellement, mon projet a un java backend et est construit avec Maven. Est-il judicieux d'ajouter Google Closure compiler à ce processus de construction?

En gros, je suis à la recherche de toutes les bonnes ressources qui sont spécifiques à l'aide de Google Closure compiler avec jQuery.

10voto

Anurag Points 66470

Google Closure compiler est jQuery ou toute autre bibliothèque agnostique. Il dispose de deux types d'optimisations -

  • Simple
  • Avancé

J'ai essayé d'appliquer des optimisations avancées, mais il sévèrement cassé ma demande. Si il en fait de même, vous pouvez soit essayer de les corriger votre application, ou de l'utilisation d'optimisation simples. Il y a 32% de baisse de taille, avec de simples optimisations, et de 68% environ, avec des optimisations avancées, mais cela ne fonctionne pas de toute façon.

Le déplacement de la JS concaténation de manière automatisée à votre processus de création est certainement le chemin à parcourir. Voir http://stackoverflow.com/questions/3202606/javascript-dependency-management/3209481#3209481.

jQuery est déjà très optimisé pour la taille en octets, donc je doute que vous serez en mesure de presser assez de jus en utilisant Google Closure compiler, mais il vaut la peine d'essayer lorsqu'il est combiné avec votre projet.

Je vois Google Fermeture de la Bibliothèque dans une lumière favorable, mais n'ai pas encore eu à l'utiliser, car je suis fortement investi dans MooTools à ce point. En la regardant de l' API, il semble qu'il a une assez large couverture sur ce qu'il a à offrir que peu de manipulations DOM, AJAX manutention, la gestion des événements, etc.

10voto

reelfernandes Points 161

$(elem)['width']() au lieu de $(elem).width()

Cela fonctionne avec ADVANCED_OPTIMIZATIONS, de sorte que le compilateur de fermeture ne refactorise pas les méthodes jQuery.

9voto

HOCA Points 647

Je crois que des 1.4.2 (peut-être plus tôt), jQuery est minimisé à l'aide de Google Closure compiler par défaut. Donc c'est probablement mieux de continuer de référencement jQuery/jQuery UI via google CA. Cependant, il y a toujours des avantages de l'intégration de la Fermeture du compilateur dans votre processus de génération de combiner et minifier vos fichiers JS. À savoir, la réduction JS requêtes par page de chargement et de données plus petite viré dans l'espoir de l'amélioration de votre côté client performances de chargement des pages. Ces sont quelques-uns des défis que nous avons rencontrés lors de l'intégration de la Fermeture du compilateur dans notre processus de fabrication:

  1. La construction de la compilation de commande - Nous besoin d'un moyen d'invoquer le compilateur avec tous les paramètres nécessaires de façon automatique pendant le processus de génération. Pour nous, cela signifiait que l'écriture d'une application console pour construire la commande. Si shell script est disponible dans votre environnement, qui pourrait être un avantage.

  2. Gestion des Dépendances - Le compilateur de Fermeture possède la capacité de trier automatiquement à l'ordre du combiné JS, telles que les dépendances sont conservés. Afin de tirer parti de cette fonctionnalité, les fichiers JS doit être annotée avec des goog.provide\goog.require pour indiquer au compilateur que les dépendances sont (--manage_closure_dependencies). Le compilateur va aussi exclure toute JS qui n'est pas nécessaire (c'est à dire n'est pas référencé par l'intermédiaire d'un goog.require déclaration) de l'ensemble des JS. Voici quelques choses à regarder dehors pour:

    • Si vous souhaitez inclure tous vous fichiers JS dans le combiné de sortie, assurez-vous d'inclure un "manifeste" fichier JS dans la compilation qui contient uniquement des goog.require annuels pour chaque fichier combiné script (c'est à dire pas d' goog.provide des déclarations).
    • Si vous n'utilisez pas la Fermeture de la Bibliothèque, de s'assurer que vous êtes à la compilation à l'aide de SIMPLE_OPTIMIZATIONS ou plus. Sinon, le compilateur ne va pas supprimer l' goog.provide/goog.require des déclarations. Sinon, vous pouvez également définir vos propres goog.provide/goog.require JS fonctions pour éviter les erreurs.
    • Assurer il n'y a pas de dépendances cycliques, ou en subir les conséquences.
  3. La compilation d'une version de débogage du combiné script - Si nécessaire, vous pouvez compiler une version de débogage de la combinaison de script à l'aide de l' --formatting PRETTY_PRINT drapeau. Cette volonté de sortie de l'équivalent de script mis en forme avec des espaces intacts pour le développement/débogage.

Bien que, la Fermeture de la documentation du compilateur peuvent être dispersés à la fois, il n'ont suffisant pour commencer, pour la plupart, et il est en constante amélioration afin de vérifier régulièrement les mises à jour, non pas seulement ce qu' ;)

Espérons que cette aide.

6voto

Fatih Points 8709

5voto

Stephen Chung Points 9467

jQuery n'est pas compatible (encore) avec le Compilateur de Fermeture en mode avancé. Je suis d'accord ce serait une très bonne chose pour le rendre compatible, parce que sa méthode de chaînage syntaxe prête très facilement au prototype de la virtualisation pour beaucoup amélioré la vitesse d'exécution.

En fait, populaire parmi les bibliothèques JavaScript (autres que la Fermeture de la Bibliothèque, qui est), que le Dojo Toolkit est compatible avec Fermeture en mode Avancé.

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X