Angular.js, préquel

J'ai découvert, tardivement, AngularJS, un excellent framework MVC en javascript visant à développer des applications web éxécutée coté client. Quand je dis tardivement, ça veut dire avec un an de retard. Ça a pas l'air beaucoup, mais en fait, c'est énorme en terme de veille technique !

Bref, sous la pression sociale, j'ai fini par lâcher YUI et Yoshioka afin d'aller gouter à la concurrence. Et je fus rapidement conquis ! J'ai donc beaucoup à dire sur cet excellent framework, qui, s'il était sorti plus tôt, aurait pu m'éviter l'écriture de Yoshioka et aurait pu être la base d'Overblog Kiwi à sa place.

Nous allons commencer par faire un petit historique des frameworks MVC en javascript tel que ma mémoire et wikipedia s'en rappellent. Puis nous entrerons dans les détails d'AngularJS dans de prochains articles.

Histoire

Si je m'en réfère à ma veille technique, les framework MVC en javascript sont des solutions très récentes. Le premier que j'ai découvert il y a quatre ans était Embedded JavaScript, qui n'était finalement qu'un premier pas vers le MVC car un simple langage de template. Son principe résidait dans la possibilité de faire charger des templates en ajax, puis de les compiler et les insérer dans le DOM à partir de données en JSON. La première brique : la vue, le V du MVC était en place. Mais il manquait encore beaucoup de choses.

Un peu plus tard en 2010 est arrivé Sproutcore, édité par Apple. Un véritable framework MVC avec des éléments d'interfaces graphiques. Il s'est fait connaitre pour être la fondation de MobileMe, la suite bureautique online d'Apple. Son inconvénient était qu'il s'inspirait fondamentalement des guidelines de Cocoa, le langage de programmation des application natives de Mac OS X, ce qui en faisait un outil accessible pour les développeurs Mac, mais difficile à approcher pour les développeurs web. C'est dans ce framework que j'ai découvert des principes inconnus dans la programmation coté client mais pourtant tellement pratiques : fixtures et tests unitaires. Aujourd'hui, Sproutcore a été forké en un nouveau projet : Ember.js.

Quelques mois plus tard, Yahoo, qui a sorti sa version 3 de YUI en 2009, ajoute des classes expérimentales de modèles, vues et routeur (changement d'url sans recharger la page, soit par le biais d'ancre, soit par l'usage de History push) dans l'espoir de proposer une infrastructure MVC à leur librairie. Aujourd'hui cette infrastructure est stable et très fonctionnelle. Mais c'est à ce moment que j'ai décidé d'écrire Yoshioka.js en tant que surcouche des classes expérimentales pour profiter le plus rapidement possible des bonnes avancées de YUI 3 en terme d'architecture, de la philosophie et des design pattern de Sproutcore et de la simplicité des templates EJS.

Enfin, en 2012 est né un nouveau framework : Angular.js. Maintenu par Google, il a très rapidement conquis beaucoup de développeurs. Son principe ressemble beaucoup à celui du célèbre framework PHP Symfony 2 en se basant sur un injecteur de dépendances et un moteur de template éprouvé qui ressemble légèrement à Twig. Il est aussi capable de travailler avec le moteur de templates EJS. Il gère le routage de façon très claire et est modulable à souhait grâce à son injecteur de dépendances. Et il est même capable de se passer de jQuery afin de vous permettre d'utiliser la librairie de votre choix !

Retour à l'accueil