Angular vs React

Les deux principaux frameworks JavaScript actuels sont Angular et React.

Nous avons nettement tranché pour Angular. C’est pourquoi vous ne trouverez pas de formation React dans notre offre. Nous préférons vous orienter vers ce qui nous paraît être le meilleur choix et nous spécialiser sur le sujet, plutôt que de nous/vous disperser.

Notez cependant qu’il ne s’agit pas de dire que React est un mauvais outil. React a de très bonnes idées (notamment le JSX) et vous trouverez aussi de bons arguments en sa faveur. Un choix technologique est orienté par certains critères, on vous explique lesquels nous paraissent importants.

NB : cet article vaut pour Angular 2 / 4 / 5, qui sont le même framework.

Performances

Angular 1 fut le premier grand framework de ce type. Comme il s’agissait d’une première tentative, il n’est évidemment pas parfait, notamment du point de vue des performances. C’est sur ce point que React a fait son succès, en étant très réactif.

Angular 2+ vise évidemment, entre autres, à corriger ce problème de performances. Et il y arrive très bien. Dans sa version finale, Angular propose de nombreux systèmes pour booster les performances :

  • compilation offline AoT (Ahead of Time) du code Angular ;
  • chargement possible dans un Web Worker (un processus pour les traitements et un autre pour l’UI, qui reste ainsi fluide) ;
  • tree-shaking des modules ES6 (qui permet de ne charger que ce qui est nécessaire) ;
  • lazy loading avec le router ;
  • server-side rendering (pour pré-générer le contenu côté serveur, et ainsi avoir un chargement quasi instantané, comme un site web classique).

Certains de ces outils sont aussi disponibles dans React, d’autres non. En combinant tout cela, Angular 2+ est plus rapide et plus léger que React.

Fonctionnalités

React permet seulement de faire des composants. Il le fait bien, mais c’est loin de suffire pour faire une application complète : il faudra aussi gérer le routing, les requêtes HTTP, etc. C’est possible avec React via des plugins, mais qui sont communautaires, avec les désavantages que cela peut avoir (documentation éparpillée, absence de maintenance et de support, usine à gaz pour mettre en place certains concepts, etc.).

Dans Angular, toutes les fonctionnalités essentielles sont des modules officiels, harmonisés dans une API homogène. C’est un véritable framework et pas une simple librairie. Vous n’êtes cependant pas obligés d’utiliser tous les modules proposés.

Cas d’utilisation

React a été créé en interne chez Facebook pour répondre à un besoin spécifique les concernant. Ils ont ensuite décidé de le rendre accessible à la communauté. Mais le besoin de Facebook n’est pas forcément représentatif de votre besoin.

Angular, lui, est mené par Google. On pourrait donc lui faire la même critique. Mais Google gère des projets bien plus nombreux et variés, allant du moteur de recherche titanesque à de simples sites vitrines, en passant par des back-office d’outils d’analytics. Angular est conçu, avec la participation de la communauté, dans cette optique : répondre à l’ensemble des besoins.

Choix technologiques

Angular a fait le choix de se baser massivement sur l’ES6+, le standard actuel de JavaScript, et même de prendre un peu d’avance avec certaines fonctionnalités à venir. Cela permet de réduire considérablement la courbe d’apprentissage, certaines fonctionnalités de base du framework étant tout simplement du JavaScript natif. Il est possible de coder en ES6 avec React, mais c’est une possibilité tardive qui commence seulement à être pleinement prise en compte.

Angular a aussi fait le choix de se baser par défaut sur TypeScript. Etant donné l’objectif de ces frameworks, qui est de développer des applications, dans lesquelles aucune erreur ne doit être possible (sinon l’appli crashe), c’est un choix très intelligent que vous allez adorer, et on vous explique pourquoi ici.

Si vous êtes développeur Java, C# ou équivalent, c’est le jour et la nuit entre les 2 outils. React vous paraîtra être du code spaghetti (la raison pour laquelle vous vous êtes tenu/e à l’écart du JavaScript pendant toutes ces années), alors que vous allez être surpris/e de constater à quel point Angular et le JavaScript moderne en général sont très proches de ce que vous avez l’habitude de faire en Java ou C#.

Enfin, Angular a fait le choix d’intégrer nativement la librairie RxJS, qui permet de faire de la programmation fonctionnelle et de grandement simplifier la gestion de l’asynchronicité, qui est la difficulté majeure en JavaScript.

Licence

C’est un détail qui est d’abord passé inaperçu : React est open source, mais Facebook y a ajouté une clause spéciale. Son interprétation diverge, mais l’idée générale est que la licence peut vous être retirée si vous êtes en concurrence ou en conflit avec Facebook. Certaines grandes entreprises, dont le service juridique vérifie ce genre de clauses, ont refusé de travailler avec React à cause de cela.

Angular est disponible sous licence libre MIT, sans clause obscure.

Compétences

La France ayant un train de retard en JavaScript, le tournant React n’a pas été pris en 2015. La plupart des développements sont encore sous Angular 1. Il sera donc plus facile et pertinent de passer à Angular 2+.

Par ailleurs, surtout grâce au choix de TypeScript, Angular est vraiment très proche de langages comme Java ou C#, facilitant le passage d’une compétence à l’autre. Or c’est en grande partie à ces développeurs qu’on demande aujourd’hui de passer côté front.

Nos retours le confirment : la demande est très forte pour Angular.

Découvrez notre formation Angular.