C’était quoi, AngularJS ?
AngularJS était très populaire et a été utilisé pour développer des applications clients complexes, exactement comme son grand-frère Angular. Il permettait de réaliser de grosses applications et de les tester avec efficacité. Il a été développé dans les locaux de Google en 2009 et était utilisé pour quelques-unes de ces applications en interne (je ne pourrai pas vous dire lesquelles par contre).
Pour les développeurs d’AngularJS, je vous ai préparé une petite liste ci-dessous des changements majeurs entre la première version et la deuxième. Voici résumé en six points les changements qui me paraissent les plus importants :
- Les
contrôleurs : L’architecture traditionnelle MVC est remplacée par une
architecture réactive à base de composants web. L’architecture MVC est une
architecture classique que l’on retrouve dans beaucoup de Framework (Symfony,
Django, Spring) permettant de découper le Modèle, la Vue et le Contrôleur.
- Les
directives : La définition existante de l’objet Directive est retirée, et
remplacée par trois nouveaux types de directives à la place : les composants,
les directives d’attributs et les directives structurelles.
- Le $scope
: Les scopes et l’héritage de scope sont simplifiés et la nécessité d’injecter
des $scopes est retirée.
- Les
modules : Les modules AngularJS sont remplacés par les modules natifs
d’ES6.
- jQLite
: Cette version plus légère de jQuery était utilisée dans AngularJS. Elle est
retirée dans Angular, principalement pour des raisons de performance.
- Le two-way data-binding : Pour les même
raisons de performances, cette fonctionnalité n’est pas disponible de base.
Cependant, et il est toujours possible d’implémenter ce mécanisme avec Angular.
Pourquoi Angular ?
L’équipe de Google qui travaille sur AngularJS a officiellement annoncé Angular à la conférence européenne Ng-Conf en Octobre 2014 (Une conférence consacrée spécialement à Angular). Ils ont annoncé que cette nouvelle version ne serait pas une mise à jour, mais plutôt une réécriture de l’ensemble du Framework, ce qui causera des changements de ruptures important. D’ailleurs, il a été annoncé qu’AngularJS ne serait plus maintenu à partir de 2018. On dirait qu’ils veulent faire passer un message, vous ne trouvez pas ? 😏
Les motivations pour développer un nouveau Framework, tout
en sachant que cette version ne serait pas rétro-compatible, étaient les
suivantes :
- Les standards du web ont évolué, en particulier l’apparition des Web Components (nous y reviendrons) qui ont été développés après la sortie d’AngularJS, et qui fournissent de meilleures solutions de manière native que celles qui existent actuellement dans les implémentations spécifiques d’AngularJS. Angular a été l’un des premiers Frameworks conçu pour intégrer sérieusement avec les Web Components.
- JavaScript ES6 – la plupart des standards d’ES6 ont été finalisés et le nouveau standard a été adopté mi-2015 (Nous y reviendrons également). ES6 fournit des fonctionnalités qui peuvent remplacer les implémentations existantes d’AngularJS et qui améliorent leurs performances. Pourquoi s’en priver ?
- Performance – AngularJS peut être amélioré avec de nouvelles approches et les fonctionnalités d’ES6. Différents modules du noyau d’Angular ont été également retirés, notamment jqlite (une version de JQuery allégée pour Angular) ce qui résulte en de meilleures performances. Ces nouvelles performances font d’Angular un outil parfaitement approprié pour développer des applications web mobiles.