web-dev-qa-db-fra.com

Quel est le lien entre Angular JS et Google Closure?

Maintenant que AngularJS 1.0 est publié je me demande comment ce projet s'intègre avec l'autre framework/outil JavaScript à usage général de Google, Fermeture .

Je n'ai vu qu'une description de base de ces deux technologies (et j'ai lu environ la moitié du livre sur Closure), je n'ai donc aucune expérience directe, mais voici à quoi cela ressemble pour moi:

  • La fermeture est un ensemble de technologies qui peuvent être utilisées séparément. Ce que je trouve probablement le plus attrayant est:
    • Compilateur de fermeture qui semble "corriger JavaScript" dans le sens où il met en garde contre les problèmes typiques, fournit des vérifications au moment de la compilation (pas toutes les personnes comme ça mais probablement la plupart des développeurs Google, et moi aussi). Et bien sûr, c'est bien que le code résultant soit plus petit et plus efficace.
    • Ensuite, il y a certaines parties de Bibliothèque de fermeture que j'aime, par exemple abstractions sur les types intégrés (ArrayLike etc.), système basé sur les classes, mécanisme d'événement, abstractions DOM, etc. Je ne sais pas encore si j'aime ou non la bibliothèque GUI (semble être assez complexe et Je n'ai pas encore vraiment eu le temps de l'étudier).
    • Ensuite, il y a certaines fonctionnalités que je ne pense pas que je trouverais utiles, par exemple Modèles .
  • AngularJS , que je n'ai lu que brièvement, semble être beaucoup plus élevé que Closure. Cela semble être un framework d'application fournissant des fonctionnalités comme la liaison de données, des composants réutilisables, la structure MVC, etc.

Donc, ces deux technologies semblent viser un niveau d'abstraction assez différent, donc ma première pensée a été: peuvent-elles être utilisées ensemble? Fermeture fournissant des abstractions de bas niveau du compilateur et du navigateur tout en Angular fournissant des services et une structure au niveau de l'application? Serait-il logique et fonctionnerait-il bien ensemble?

44
Borek Bernard

Le seul projet Google à ma connaissance qui utilise AngularJS est l'équipe DoubleClick. (présentation) Essentiellement, ils utilisent toujours Google Closure Library pour tout sauf le bâtiment de l'interface utilisateur. Notez également qu'ils utilisent Google Closure Compiler, mais c'est presque acquis, "personne" n'utilise que la bibliothèque sans le compilateur.

Google Closure Library est livré avec un cadre d'interface utilisateur dans son goog.ui espace de noms. Ce cadre se compare à presque tous les niveaux aux cadres d'interface utilisateur non Web comme Android, iOS, Swing et QT. Ils ont une chose que j'aime appeler les éléments DOM sur les stéroïdes, goog.ui.Component, qui possède de nombreux mécanismes de cycle de vie pour la collecte des ordures et l'écoute des événements, etc. Vous avez des choses comme goog.ui.Control, qui est une sous-classe de goog.ui.Component, et gère l'interaction utilisateur de manière très intéressante. Il vous permet de brancher des moteurs de rendu, par exemple, afin que vous puissiez modifier un <button> à un <a> sans changer aucune de vos autres logiques à l'exception du rendu réel.

En parlant de classes et de sous-classes, Google Closure Library a également cela. Vous n'avez pas besoin d'utiliser celui intégré, la partie importante est que vous appelez en quelque sorte le prototype de la "superclasse" dans vos méthodes. Vous pouvez par exemple utiliser le système de classes dans CoffeeScript, Google Closure Library s'en fiche.

La raison pour laquelle l'équipe DoubleClick a choisi AngularJS était apparemment en grande partie à cause des fonctionnalités de liaison de données fournies par AngularJS. Il n'y a rien dans la bibliothèque de fermeture de Google pour mettre à jour automatiquement l'interface utilisateur lorsque les données changent.

Donc, pour résumer, Google Closure est une bête huuuuge, et AngularJS peut remplacer le goog.ui fait partie de la bibliothèque Google Closure.

36
August Lilleaas

Je pense que AngularJS ressemble plus à un cadre MVC/MVVM solide et Closure Library est un ensemble de composants lâches, bien que les deux AngularJS Templates et Closure Templates ont beaucoup en commun.

3
niutech