Maintenant que AngularJS 1.0 est disponible, je me demande comment ce projet s’intègre à l’autre framework / outil JavaScript généraliste de Google, Closure .
J’ai seulement vu la description de base de ces deux technologies (et lu environ la moitié du livre sur la fermeture), donc je n’ai aucune expérience directe, mais voici à quoi ça ressemble:
ArrayLike
( ArrayLike
etc.), les systèmes basés sur les classes, les mécanismes d’événement, les abstractions DOM, etc. non (semble être assez complexe et je n’ai pas encore eu le temps de l’étudier). Donc, ces deux technologies semblent viser un niveau d’abstraction bien différent, donc ma première pensée était: peuvent-elles être utilisées ensemble? Fermeture fournissant des abstractions de compilation et de navigation de bas niveau, tandis qu’Angular fournit des services et une structure au niveau de l’application? Cela aurait-il du sens et cela fonctionnerait-il bien ensemble?
Le seul projet Google que je connaisse qui utilise AngularJS est l’équipe DoubleClick. (présentation) Essentiellement, ils utilisent encore Google Closure Library pour tout sauf le bâtiment de l’interface utilisateur. Notez également qu’ils utilisent Google Closure Comstackr, mais c’est presque une donnée, “personne” n’utilise que la bibliothèque sans le compilateur.
Google Closure Library est livré avec un framework d’interface utilisateur dans son espace de noms goog.ui
Ce cadre se compare pratiquement à tous les frameworks d’interface utilisateur non Web tels qu’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 a beaucoup de bons mécanismes de cycle de vie pour la récupération de place et l’écoute des événements et plus encore. 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, par exemple, de twigr des rendus afin que vous puissiez remplacer un par un
sans modifier votre autre logique, à l’exception du rendu réel.
En parlant de classes et de sous-classes, Google Closure Library a également ceci. Vous n’avez pas à utiliser celui intégré, le plus important 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 ne vous intéresse pas.
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 de intégré dans Google Closure Library 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 la partie goog.ui
de Google Closure Library.
Je pense qu’AngularJS ressemble davantage à un framework MVC / MVVM solide et que Closure Library est un ensemble de composants non structurés, bien que les modèles AngularJS et les modèles de fermeture aient beaucoup en commun.