44 votes

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 à l'autre cadre/outil JavaScript polyvalent de Google, Fermeture .

Je n'ai vu qu'une description sommaire de ces deux technologies (et lu environ la moitié du livre sur Closure), je n'ai donc pas d'expérience directe, mais c'est ainsi que je vois les choses :

  • 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 fermetures qui semble "réparer JavaScript" dans le sens où il avertit contre les problèmes typiques, fournit quelques vérifications à la compilation (tout le monde n'aime pas cela, mais probablement la plupart des développeurs de Google le font, et moi aussi). Et bien sûr, il est agréable que le code résultant soit plus petit et plus efficace.
    • Ensuite, il y a certaines parties de Bibliothèque des fermetures que j'apprécie, par exemple les abstractions sur les types intégrés ( ArrayLike etc.), système basé sur les classes, mécanisme d'événements, abstractions DOM, etc. Je ne sais pas encore si j'aime ou non la bibliothèque GUI (elle semble assez complexe et je n'ai pas encore eu le temps de l'étudier).
    • Ensuite, il y a certaines fonctionnalités que je ne pense pas trouver très utiles, par exemple Modèles .
  • AngularJS que je n'ai lu que brièvement, semble être d'un niveau beaucoup plus élevé que Closure. Il semble qu'il s'agisse d'un cadre applicatif offrant des fonctionnalités telles que la liaison de données, les composants réutilisables, la structure MVC, etc.

Ces deux technologies semblent donc viser un niveau d'abstraction assez différent. Ma première réflexion a donc été de savoir si elles pouvaient être utilisées ensemble. Closure fournit des abstractions de bas niveau pour le compilateur et le navigateur tandis qu'Angular fournit des services et une structure au niveau de l'application ? Cela aurait-il un sens et fonctionnerait-il bien ensemble ?

36voto

August Lilleaas Points 25812

À ma connaissance, le seul projet Google qui utilise AngularJS est celui de l'équipe DoubleClick. (présentation) Essentiellement, ils utilisent toujours la bibliothèque Google Closure pour tout, sauf pour la construction de l'interface utilisateur. Notez également qu'ils utilisent Google Closure Compiler, mais c'est presque une évidence, "personne" n'utilise seulement la bibliothèque sans le compilateur.

La bibliothèque Closure de Google est livrée avec un cadre d'interface utilisateur dans sa version goog.ui espace de noms. Ce cadre est comparable en presque tous points aux cadres d'interface utilisateur non web comme Android, iOS, Swing et QT. Ils ont une chose que j'aime appeler des éléments DOM sur des stéroïdes, goog.ui.Component qui dispose d'un grand nombre d'excellents mécanismes de cycle de vie pour la collecte des déchets, 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 avec l'utilisateur d'une manière très intéressante. Il vous permet de brancher des moteurs de rendu, par exemple, afin de pouvoir changer une <button> à un <a> sans changer aucune autre logique que celle du rendu.

En parlant de classes et de sous-classes, la bibliothèque Google Closure en dispose également. Vous n'êtes pas obligé d'utiliser le système intégré, l'important est que vous appeliez d'une manière ou d'une autre le prototype de la "superclasse" dans vos méthodes. Vous pouvez par exemple utiliser le système de classes de CoffeeScript, Google Closure Library s'en moque.

L'équipe de DoubleClick a choisi AngularJS pour les raisons suivantes apparemment en grande partie grâce aux fonctions de liaison de données qu'offre AngularJS. Il n'y a rien d'intégré dans la bibliothèque Google Closure pour mettre automatiquement à jour l'interface utilisateur lorsque les données changent.

Donc, pour résumer, Google Closure est une bête énorme, et AngularJS peut remplacer la fonction goog.ui qui fait partie de la bibliothèque des fermetures de Google.

3voto

niutech Points 5023

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

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