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:
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).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?
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.
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.