Après avoir épluché jQuery en long en large et en travers, après être repassé en JS Vanilla (JS pur, pour les profanes), j’ai décidé de m’attaquer à AngularJS. Déjà parce que j’aime toujours avoir quelque chose à apprendre pendant mes heures perdues et que AngularJS, après y avoir touché rapidement il y a près d’un an, m’a semblé être une bonne direction à prendre. Je m’explique : je suis passé par beaucoup de technologies purement front-end, frameworks, pré-processeurs CSS, etc. et, en regardant certaines conférences, notamment sur Node.js et autres, j’avais envie de me mettre à un framework de ce type, c’est à dire un framework JS qui englobe un peu tout, et touche donc au serveur. J’ai regardé la doc de quelques uns de ces frameworks MVC en JS pour tomber au final sur AngularJS et y m’attarder. Pourquoi ? Parce que les autres (NodeJS, EmberJS, etc.) me semblait beaucoup plus complexe à prendre en main, compte-tenu mon expérience. L’approche d’AngularJS et sa présentation me convient mieux : ça semble plus « beginner-friendly », tout ce qu’il me faut.

Ok et donc au final, j’en fais quoi d’AngularJS ? C’est assez simple, il me permet d’aller un peu plus loin avec JS, plus rapidement, plus simplement, et au final, de créer des web-apps fiables, de dialoguer facilement avec des APIs, et tout ça avec un language que je connais déjà : Javascript.

En théorie, ça donne quoi ? Angular divise l’application selon le principe du MVC, Modèle Vue Contrôleur. Ça parait simple pour beaucoup de monde, mais justement, vu mon profil, les principes du MVC était pour moi complètement exotiques. Ce n’est pas vraiment grave, AngularJS présente tout ça dans son tutoriel. Donc le MVC, rapidement, c’est le modèle (les données), la vue (l’interface utilisateur) et le contrôleur (le système, l’application, les « rouages » du site). Tout ça était étranger pour moi. Si c’est le cas pour vous, je vous conseille a minima de jeter un oeil aux guides d’AngularJS et son tuto, très bien faits. Donc en gros, AngularJS gère tout ça, il a un système de templates, que l’on peut augmenter avec des directives, et brancher à des contrôleurs, des filtres, des services.

Mais concrètement ? Un exemple qui parle : vous avez besoin de traiter les données provenant d’un JSON, comme une liste d’utilisateurs par exemple. C’est assez simple avec Angular, vous chargez vos données via un contrôleur, et vous les traitez dans la vue (un fichier html tout bête), avec une directive native: ng-repeat. ng-repeat est l’équivalent d’un foreach, et va répéter l’élément selon le nombre d’occurrence qu’il va trouver dans le modèle. Ex: <span class= »name » ng-repeat= »user in users »>{{ user.name }}</span>. Ce n’est qu’un exemple, il existe d’autres directives de ce genre : ng-switch, ng-if, etc. Tout ça permet de traiter les infos rapidement, de classer, de filtrer, de paginer, de rechercher, de calculer, etc.

Le bon côté de la chose : la syntaxe permet de traiter (via les filtres) et d’injecter rapidement dans la vue des données. Le mauvais côté de la chose, ou en tout cas, une des particularités d’AngularJS, il a besoin d’un élément de DOM pour créer une condition ou une boucle. C’est bon à savoir quand vous avez une page à intégrer, il faut prévoir le fait que, au contraire d’un autre framework, AngularJS nécessitera certainement des modifications dans le DOM pour être implémenté. Autre point à prendre en compte : AngularJS est vraiment fait pour de l’applicatif web. Si vous projetez de faire tourner un site sous Angular, très bien, mais n’oubliez pas que toutes les données dynamiques sont injectées côté client. En d’autre terme, le code source montre les variables telles qu’elles ont été codées, exemple : {{ user.name }}. Ce qui a de lourdes conséquences si vous envisagez l’aspect SEO.

Ceci dit, je le conseille à tout ceux qui ont le même profil que moi (front-end avant tout) qui veulent élargir un peu leurs horizons. Ça a été assez compliqué dans mon cas, pas mal de nouveau vocabulaire à apprendre, à tester du code, à me planter, à persévérer. Je pense que ça vaut le coup, c’est peut être un accès pour moi vers d’autres technologies reposant sur le principe du MVC, qui me sembleront peut être plus accessible du fait de cette expérience avec AngularJS. Et j’oubliais, AngularJS a été mis au point par une équipe de Google. Le bon point là-dedans, c’est qu’il y a de grandes chances pour que ce projet soit maintenu pendant un bon moment.