Que propose la bibliothèque de fermeture Google sur jQuery? [fermé]

190

Considérant

  • fond d'affaires
  • soutien communautaire
  • extensions disponibles
  • ensemble de fonctionnalités par défaut
  • simplicité d'utilisation
  • et fiabilité

pourquoi préférez-vous l'un à l'autre?

pestaa
la source
1
Je pense qu'il sera difficile de dire pourquoi l'un est préféré à l'autre jusqu'à ce que les gens puissent expérimenter des applications et voir quelles sont les limites de la fermeture.
James Black
3
Quelques comparaisons de syntaxe ici: derekslager.com/blog/posts/2010/06/…
user194743
4
Cet article peut également vous aider à prendre une décision. Leçon clé: «La fermeture est un écosystème. Ce n'est pas comme jQuery où vous l'utilisez juste ici et là pour faciliter l'accès ou la manipulation du DOM. Si vous voulez vraiment utiliser Closure, vous devez vous engager à vraiment l'utiliser. »
Dan Abramov
2019 Qu'est-ce que la fermeture de Google? : D
evilReiko

Réponses:

176

Je vais essayer d'ajouter mon élément d'information.

Plus qu'une autre bibliothèque JS

Si je comprends bien, Google Closure n'est pas seulement une autre bibliothèque JS, mais c'est aussi un ensemble d'outils qui vous permettront d'optimiser votre code JS. Travailler avec jQuery vous donne de bons outils et une bibliothèque légère, mais cela ne réduit pas votre propre code. Le compilateur Closure le fera. L' inspecteur de fermeture peut également être utile, car le code minifié a parfois un comportement différent de celui d'origine et est difficile à déboguer. Il s'intègre à Firebug et prend en charge les tests unitaires, qui sont aujourd'hui les meilleurs amis des développeurs.

Documentation

Je suppose que comme toute nouvelle bibliothèque VS une bibliothèque bien établie, il lui manquera la disponibilité de tonnes d'extensions et de tutoriels que jQuery a. Cependant, être poussé par Google devrait garantir que le support et la fiabilité seront à la fois assez bons. La documentation et le didacticiel actuels semblent également très bons.

Caractéristiques

Les fonctionnalités de Closure semblent décentes, cependant, et son architecture modulaire est également prometteuse. Je suppose que Google l'utilise en interne depuis longtemps, ce qui signifie que vous pouvez vous attendre à ce que toutes les fonctionnalités de base (et plus) soient implémentées, et probablement de manière très optimisée et évolutive. Ils essaient de le présenter comme la STL de JavaScript, ils auraient donc dû le peaufiner.

Après avoir examiné les fonctionnalités de plus près, il semble que cela puisse être un pas en avant pour le développement d'applications Web par rapport aux bibliothèques existantes comme jQuery. On suppose que cela profite aux développements internes de Google, mais des choses comme la détection de l'état en ligne (voir goog.events.OnlineHandler ), l'intégration facile des requêtes AJAX et des actions JS dans l'historique du navigateur (voir goog.History ), ou les légions de grands widgets ils fournissent (voir le paquet goog.ui ) peuvent nous aider tous à créer des applications Web encore plus impressionnantes;)!

Il est livré avec des fonctionnalités de modèles qui s'intègrent à Java (qui a dit GWT ?), Donc cela peut également être un autre avantage pour Closure.

Facilité d'utilisation

Enfin, il semble assez simple à utiliser. La syntaxe peut être un peu plus verbeuse que la fonction courte $ jQuery, mais avec les IDE et l'auto-complétion, ce n'est pas un vrai problème. De plus, je dirais que nous pouvons nous attendre à une bonne intégration dans des IDE comme Eclipse, venant de Google.

EDIT: comme demandé, permettez-moi de dire quelques mots sur la référence GWT. Google Web Toolkit est une bibliothèque Java qui permet de créer des interfaces Web compatibles AJAX et qui génère (et optimise) le code JavaScript requis. Comme Google Closure permet de créer des modèles qui peuvent être utilisés à la fois côté client et côté serveur (en utilisant JavaScript et Java), je suppose qu'il sera bientôt possible de les utiliser conjointement (si ce n'est pas déjà le cas).

Wookai
la source
5
Réponse détaillée et significative, merci. Pouvez-vous expliquer ce que signifie cette référence à GWT? J'ai peur de ne pas l'avoir compris.
pestaa
1
Je pense que vous devriez également mentionner la bibliothèque de modèles (Soy) dans votre section "Plus que". Le même fichier de modèle peut être utilisé à la fois côté serveur (Java) et côté client. Vraiment belle mise en œuvre IMO. Cela signifie que nous pouvons simplement envoyer du JSON dans des requêtes AJAX plutôt que d'envoyer du HTML - économise de la bande passante.
Frank Krueger
1
Je viens de découvrir une critique contre Closure, mais c'est peut-être juste FUD: sitepoint.com/blogs/2009/11/12/…
nalply
7
La critique n'est pas FUD, et merci pour le lien. La critique se concentre sur la façon dont le code javascript n'est pas optimal partout. Cela peut être valide, mais il manque le point le plus important. Si je comprends bien, Closure cible des applications JS vraiment complexes (à l'échelle de GMail), et cela a des conséquences - telles que toutes les lignes ne sont pas optimales puisque tout n'est pas écrit par un seul codeur brillant. Mais à l'inverse, il pourrait évoluer davantage en tant que cadre de génie logiciel.
Peter S Magnusson
3
@nalpy Comme suggéré par les commentaires, cet article n'a pas mentionné que la bibliothèque obtient un COMPILER (pas un minifier) ​​qui pourrait optimiser ces problèmes de codage.
Ant
30

Dans mon bref aperçu de l'API, je trouve que les différences entre jQuery et Closure sont frappantes.

jQuery est essentiellement un moyen simplifié d'effectuer de nombreuses opérations fréquentes de manière inter-navigateurs.

Closure est un framework qui est très nouveau, en ce sens qu'ils fournissent une manière multi-navigateurs d'utiliser la <canvas>balise, par exemple, et ils ont ajouté de nouveaux événements.

Donc, cela s'ajoute à ce que nous faisons généralement avec javascript, ils prennent de nombreuses opérations que les gens veulent faire et les mettent dans l'API.

Par exemple, ils ont un événement pour dire si l'état en ligne a changé. Vous pouvez donc savoir si le système est en ligne.

Ils ont des fonctions javascript qui utilisent des outils tels que Google Gears, ce qui continue avec le fait qu'ils ont étendu ce qui peut être fait avec Javascript.

Il me faudra quelques jours pour digérer tous les changements, mais je peux voir que cela pourrait avoir un impact important sur les applications Web qui peuvent être développées.

James Black
la source
25

Le plus grand avantage de Closure Library est qu'il est conçu pour Closure Compiler. Cela ouvre des possibilités complètement nouvelles pour le développement JavaScript ...

Le compilateur a plusieurs fonctionnalités intéressantes:

  • Il compile le JavaScript lisible en JavaScript compressé lisible par machine - il a le meilleur taux de compression en mode "AVANCÉ".
  • La documentation du code avec les balises JSDoc est importante: le compilateur le lit et vous obtenez des avertissements lors de la compilation pour des fautes de frappe dans la documentation, une mauvaise utilisation d'un @constructor, un mauvais type de variable , une mauvaise utilisation d'un champ annoté avec @private et @protected, etc.
  • Si vous écrivez une bibliothèque JavaScript réutilisable, telle que OpenLayers ou Google Maps, vous exportez formellement votre API publique - et le compilateur optimise votre code interne.
  • Les applications finales peuvent être compilées avec la bibliothèque - puis les parties inutilisées de la bibliothèque sont supprimées du code produit. Les dépendances sont résolues automatiquement par le compilateur.
  • Le compilateur accepte les constantes pour supprimer les fonctionnalités indésirables - cela permet la compilation uniquement pour un navigateur particulier tel que Mobile WebKit, pour un seul des modes Quirks ou Strict, compilation sans prise en charge d'IE6, etc.
  • Le débogage avec FireBug est possible même pour la version compilée du code source.
  • Le compilateur prend en charge la génération de modules chargeables dynamiquement, ce qui peut considérablement accélérer le chargement de l'application finale, car le code des fonctionnalités avancées ne peut être chargé que lorsqu'il est nécessaire.

Pour plus de détails, consultez: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html

Petr Pridal
la source
20

Edit : jetez un œil à cette vidéo youtube, elle répondra peut-être mieux à certaines questions sur Google Closure.

Les meilleures sources d'informations sur la fermeture de Google sont probablement le groupe de discussion du projet , le wiki, les pages de documentation, les démos et un livre encore inachevé de Michael Bolin qui est maintenant disponible sur le site des livres de safari.

une chose que je peux dire tout de suite - il y a une courbe d'apprentissage plus raide pour closurevs, jQuerymais cela peut valoir la peine en raison de l'immensité de la bibliothèque, de l'organisation claire et de l'avantage de l'utiliser avec le compilateur et l'outil de création de modèles.

closurebibliothèque à cet égard ressemble plus dojoà jQuery, et certains concepts ont été empruntés dojo, selon Michael Bolin.

Le compilateur de fermeture google utilise JSDocun système de documentation qui simultanément (s'il est créé correctement par le programmeur) fournit de la documentation et permet de détecter de nombreuses erreurs au moment de la compilation.

alors que les noms de fonctions sont plus verbeux que jQueryles s, le compilateur réduit le code (en utilisant diverses tactiques d'optimisation) et la vérification de type fera gagner un temps considérable au débogage du code, donc le temps de taper les noms plus longs n'est probablement pas un problème. En même temps, les noms plus longs ajoutent de la lisibilité.

la bibliothèque prend en charge les navigateurs fonctionnant en mode quirks afin que les scripts puissent être intégrés par d'autres sites en utilisant le html "excentrique"

La bibliothèque fonctionne avec (mais ne dépend pas) d'un système de création de modèles javascript appelé soyqui simplifie le remplissage de documents avec du contenu.

comme jQuerygoogle closurepermet de parcourir la structure dom avec les requêtes basées sur des chaînes en utilisant un composant dédié de la bibliothèque.

closureLa bibliothèque s'appuie plutôt sur des espaces de noms délimités par des points Java- une caractéristique organisationnelle très forte.

l'utilisation de tels espaces de noms entraînera une surcharge dans le code non compilé, mais dans le code compilé, ces choses sont remplacées par des noms de variables courts.

Evgeny
la source
1
Je cherchais autre chose et je me suis retrouvé ici, mais bon à savoir like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.Pouvez-vous me relier à une documentation à ce sujet?
IsmailS le
@iSid: Je crois qu'il en parle goog.dom.DomHelper, mais personnellement, je ne vois pas de fonction de requête équivalente à jQuery. @Evgeny: Pouvez-vous nous donner plus de détails?
exhuma
@iSid: Cette fonctionnalité est fournie par goog.dom.query , qui n'est pas documentée ainsi que le reste de l'espace de noms goog.dom.
bkirkbri
8

Je viens de publier un article assez exhaustif sur Google Closure qui répond à cette question sur insideRIA .

... Fermeture rulez! ^ _ ^

Davide Zanotti
la source
4
Belle comparaison directe avec jQuery: "[...] jQuery fonctionne vraiment bien et rend possible de grandes choses sans effort et rapidement, donc la" promesse "de Closure n'est pas d'offrir de meilleurs algorithmes mais plutôt un vraiment meilleur, manière organisée et maintenable de déployer des applications JavaScript [...] Coder en Closure signifie réfléchir avec des principes orientés objet à l'esprit, créer plusieurs fichiers js, chacun représentant une seule classe, organiser l'architecture de l'application en packages et enfin la déployer à l'aide des outils fournis , obtention d'un fichier JavaScript unique, compressé et sûr [...] "
Alex
7

Peut-être que je ne reçois pas jQuery, mais je n'ai pas vu de véritable collection de widgets d'interface utilisateur (il y a des plugins, oui, mais vous ne savez jamais à quel point ils sont bien testés et souvent il n'y a pas de gagnant clair et / ou le plugin manque Documentation).

Closure a, entre autres, une collection de widgets (voir l'onglet démos), y compris, par exemple, des boutons sans image utilisés dans gmail.

Plus généralement, il a plus de fonctionnalités implémentées dans le cadre de la version. Ce n'est peut-être pas un gros problème, mais je suis ennuyé par la mer de plugins jQuery lorsque je recherche quelque chose d'aussi simple qu'un module d'historique ajax ou une saisie semi-automatique.

Dans l'ensemble, c'est une énorme bibliothèque + un ensemble d'outils et je vais me familiariser avec elle juste pour savoir ce qui est disponible.

Nickolay
la source
2
jqueryui.com est la collection officielle de widgets d'interface utilisateur
Jourkey
1
ouais bien, à en juger par le site, il a 6 widgets: Onglets du curseur de la barre de progression de la boîte de dialogue de sélection de la date d'accordéon
Nickolay
3
J'ai utilisé jQueryUI et je pensais que c'était très faible. Il ne semble même pas être en développement. À quand remonte la dernière fois qu'un nouveau widget a été ajouté. Il s'agit peut-être de la collection officielle de widgets, mais quiconque recherche un widget à utiliser avec jQuery est mieux d'aller chercher des widgets jQuery tiers.
Nosredna
2
jQueryUI n'est pas seulement un ensemble de widgets javascript, il dispose également d'un excellent framework css. Cela a été un excellent outil pour moi dans le style des pages CRUD / admin. De plus, beaucoup de ces "widgets" de fermeture sont 1 ou 2 liners dans jQuery, ce qui ne vaut même pas la peine d'écrire un plugin pour.
Jace Rhea
2
L'attrait de JQuery ne réside pas dans les widgets prédéfinis. C'est créer vos propres widgets personnalisés en un temps record. Je touche rarement les plug-ins, y compris l'interface utilisateur.
Erik Reppen
1

J'apprécie la plupart des contributions de Google à la communauté open source et je suis sûr qu'il contient des trucs sympas, mais dans l'ensemble, je trouve Closure encombrant, surchargé et inélégant. Si vous devez tout transformer en Java, je suppose que c'est carrément spiffy.

Éditer:

C'est suffisant. Je n'ai pas vraiment comparé. La fermeture est comme un entrepôt géant avec tous les outils possibles que vous pourriez souhaiter localiser ... quelque part. Un peu comme .NET ou une énorme bibliothèque Java. Une fois que vous avez trouvé ce dont vous avez besoin, vous pouvez trouver des éléments très spécifiques qui effectuent des tâches très spécifiques. Et puis pour la production, vous pouvez supprimer tous les déchets.

JQuery, d'autre part, est plus un tournevis sonique facilement modifiable.

Erik Reppen
la source
1
J'aimerais en savoir plus sur la version Java de Closure. As tu un lien pour ça. Merci
Yazz.com
Recherchez des «balises ironiques». Vous y trouverez la réponse.
Erik Reppen
0

La bibliothèque Google Closure vous permet de compiler et d'optimiser votre JavaScript. Ce n'est pas une bibliothèque comme jQuery. jQuery est quelque chose qui vous fournit des fonctions qui vous permettent d'écrire votre propre javascript plus rapidement.

Google Closure vous aiderait à réduire votre propre code javascript pour permettre une livraison plus rapide sur Internet.

En bref, Google Closure est un outil tandis que jQuery est une bibliothèque similaire à Prototype.

Tereno
la source
6
Ce n'est pas exactement vrai. Google Closures est également livré avec sa propre bibliothèque qui est similaire à jQuery et qui fournit des fonctions et des utilitaires pour écrire votre propre code: code.google.com/closure/library/docs/tutorial.html
Wookai
2
Ah ok! Merci de m'avoir corrigé!
Tereno
2
+1 Pour avoir essayé d'être utile :)
Andomar