mardi 30 juin 2015

Angular2, une refonte nécessaire qui embrasse les nouveaux standards du web.

Bien que fonctionnant toujours très bien, la version 1 d'AngularJS date de 2009 et souffre de certaines faiblesses impossible à combler par le biais de simples mises à jour.
Dans le même temps, les navigateurs ont évolués et offrent de nouvelles fonctionnalités très intéressantes (Shadow DOM, template, ES6,..).
L'équipe de chez Google travaille donc à une refonte complète depuis la fin de l'année 2014.
 
Cette nouvelle version sera plus simple à prendre en main. La version 1 permettait beaucoup de liberté, notamment dans la manière de transmettre des données aux directives.
Maintenant une API unifiée permet de comprendre le fonctionnement d'un template au premier coup d’œil (grâce à la syntaxe différente entre le 'binding' de propriété et d’événement).
 
Un nouveau site détaille son développement et son API: https://angular.io/
 

L'approche composant

Dans la nouvelle version, il n'existe plus de contrôleur, tout est un 'composant' (avec 3 sous-ensembles: Component, Viewport, Directive). L'application prend la forme d'un arbre de composants qui commence avec le composant root.
Cela facilite le découplage et simplifie la réutilisation et les tests.
 
Cette nouvelle monture offrira des performances accrues en terme de rapidité et de mémoire. 
Entre autres améliorations, l'utilisation de Web Workers permet d'exécuter du code en tâche de fond et évite ainsi de bloquer la vue principale pendant quelques secondes/millisecondes (effet désagréable que l'on trouve sur certain site).
 

Plus en profondeur

Le framework est séparé en 2 couches qui communiquent entre elles. La couche application ('application layer') contient toutes les API et la couche de rendu ('render layer') s'occupe de mettre à jour l'interface utilisateur.
Cette séparation va permettre aux applications Angular2 de fonctionner sur différents environnements/plateformes.
 
Grâce à cela, le rendu coté serveur, de plus en plus populaire dans le monde Javascript (applications isomorphiques), devient possible avec Angular !
Cela a pour avantage des chargements de page plus rapides, une meilleur indexation (SEO), et des prévisualisations de page possibles (partage sur Facebook,..)
 
L'autre piste est le développement d'applications mobiles natives avec Angular2 (NativeScript, ReactNative,..).
 

Angular2 en production ?

Angular2 est toujours en cours de développement et l'API est en mouvement. Cela n'est donc pas encore utilisable en production.
La version 1 va rester encore supportée pendant un bon moment et un guide de migration sera mis à disposition des équipes qui souhaitent migrer même si cela n'est pas indispensable dans tous les cas.
 
Angular2 devrait arriver en version stable début 2016 mais les principales librairies de son écosystème anticipent déjà son arrivée: