Quelle posture adopter face au trio Vue.js / React / Angular ?

Florian Laforgue
neoxia
Published in
5 min readJul 24, 2019

Ces dernières années, Vue.js, React et Angular ont été comparés de toutes les manières possibles afin de déterminer lequel de ces outils était le plus efficace. Malgré ces nombreuses études, aucune réponse définitive n’a été apportée et il peut donc être compliqué de savoir quelle posture adopter face à ces technologies concurrentes.

Chez Neoxia, plutôt que d’essayer d’identifier la technologie idéale, nous avons cherché à savoir ce que pourrait nous apporter la maîtrise de plusieurs technologies qui semblent répondre au même besoin.

Pourquoi maîtriser trois technologies au lieu d’une ?

Lorsque ce type de question se pose, on pense assez vite que la spécialisation favorise la capitalisation et permet ainsi d’être plus performants. Cette stratégie permet également de réduire la diversité des compétences à maîtriser et donc le risque de “ressource critique” (lorsqu’une seule personne devient nécessaire à la maîtrise d’un outil ou d’un projet).

Néanmoins, dans le cadre d’une entreprise de services comme Neoxia, la spécialisation comporte aussi plusieurs risques stratégiques importants :

  1. Nous travaillons avec des clients qui ont pour la plupart déjà choisi l’une de ces trois technologies : il faut donc que nous soyons en mesure de nous adapter à leur contexte technique.
  2. Le recrutement de talents est un facteur clé de la réussite d’une entreprise comme Neoxia et il serait dommage de fermer la porte à d’excellents profils sous prétexte qu’il maîtrisent un framework autre que celui que nous aurions choisi.
  3. Les technologies du web évoluent très vite, en particulier dans l’univers du JavaScript. Dès lors, l’obsolescence devient un risque inhérent à toute spécialisation.

Ces constats nous ont permis de définir la stratégie la plus pérenne pour une entreprise comme Neoxia : maîtriser au mieux chacune de ces trois technologies. Notre société compte plus de 130 passionnés de tech, et on peut trouver chez Neoxia des consultants compétents sur chacun de ces outils. Cependant, pour proposer une offre solide, il est essentiel d’organiser la diffusion des compétences.

Comment assurer un haut niveau de compétences sur trois technologies concurrentes ?

Afin de mettre en oeuvre une telle stratégie de manière efficace, plusieurs risques sont à anticiper. Tout d’abord, il faut empêcher l’apparition de ressources critiques, c’est-à-dire d’individus qui sont seuls détenteurs du savoir. Pour cela, il est essentiel de favoriser un partage du savoir efficace afin de disposer de plusieurs personnes prêtes à prendre le rôle de référent (ou lead dev) sur chacune des technologies concernées. L’enjeu du partage de connaissances est un sujet sur lequel nous travaillons depuis longtemps et pour y répondre, plusieurs moyens ont été institutionnalisés.

D’abord, l’organisation de la formation chez Neoxia : en continu, via une plateforme interne d’apprentissage, la NX Academy, en complément d’autres moyens comme Udemy. Ensuite, de façon régulière à travers des évènements de formation internes : les présentations faites par les experts Neoxia le midi, au format court, et des “dojos“, au format plus long. Les dojos sont moins fréquents, mais plus intenses : il s’agit de travaux pratiques réunissant 4 à 12 personnes pendant une demi-journée.

Le plus efficace reste la composition d’équipes mixtes pour nos projets, qui permet un partage du savoir et donne de l’espace aux consultants pour développer de nouvelles compétences. Les développeurs chez Neoxia sont volontaires pour apprendre. Chacun a ses préférences et une zone de confort, chacun va donc accepter de prendre le lead ou de le laisser à d’autres en fonction des projets et de son niveau personnel de départ dans une technologie. Une même personne peut ainsi être lead dev sur un projet React et être junior sur un projet Vue.js. Ce système fonctionne dès lors que tout le monde joue le jeu et y voit un intérêt.

Comment choisir entre Vue.js, Angular et React ?

Lorsque les collaborateurs réunissent suffisamment de compétences sur plusieurs de ces trois outils, le choix de la techno en début de projet reste une question importante à régler.

Parfois, nous n’avons simplement pas le choix car le contexte technique du client nous oriente vers l’une de ces trois technologies et c’est donc à nous de nous adapter. Mais lorsque nous pouvons apporter nos conseils, plusieurs critères sont à prendre en compte.

Il faut tout d’abord distinguer deux situations : la création d’un nouveau projet et la reprise d’un projet existant. Lors de la reprise d’un projet, il faut composer avec un existant qu’il n’est pas toujours possible d’adapter à nos besoins. Le cadre strict et l’utilisation de TypeScript qui caractérisent Angular deviennent alors des contraintes qui nécessitent de “traduire” et de migrer l’intégralité des éléments existants : il sera donc rare de choisir cette technologie pour la reprise d’un projet si une réécriture totale n’est pas envisageable. En revanche, Vue.js peut être mis en place de manière rapide et peu invasive sur un bout de page, une page entière ou au niveau de toute l’application front. Les composants peuvent alors être écrits de manière progressive jusqu’à une migration complète, ou en se contentant de faire évoluer l’application existante tout en tirant profit de la réutilisabilité très simple à mettre en oeuvre grâce à la logique de composants et aux mixins.

En début de projet le choix est plus compliqué car Vue.js, React et Angular permettent tous les trois de construire de belles applications, à la fois performantes et scalables. Dans un premier temps, le choix peut s’appuyer sur les critères suivants :

  1. La position du client par rapport à Google, Facebook et la communauté open source
  2. La taille du projet, Angular n’étant réellement intéressant que sur les gros projets tandis que Vue.js et React offrent une plus grande polyvalence
  3. Les préférences et les compétences de l’équipe de développement impliquée
  4. Éventuellement, le besoin de Server Side Rendering ou non (plus compliqué avec Angular).

Si ces éléments ne suffisent pas à départager les trois concurrents, le tableau suivant peut également y aider :

Tableau comparatif de Vue.js, Angular et React

En complément, il est intéressant de préciser que Vue.js ou React, souvent présentés comme moins adaptés qu’Angular pour les gros projets, peuvent être complétés par un framework (comme par exemple Nuxt pour Vue.js). Cela permettra d’ajouter la couche d’architecture qui rendra le projet aussi scalable qu’une application basée sur Angular. Dans tous les cas, Angular compris, la création d’une application front conséquente nécessitera des phases de conception qu’il ne faudra pas négliger au début puis tout au long du projet.

Conclusion

À la reprise d’un projet, notre préférence penche vers Vue.js, plus simple à mettre en place. Pour un nouveau projet en revanche, le choix doit se faire en priorité en fonction des enjeux du client, des compétences disponibles et des volontés des développeurs, car ces trois technologies permettent de construire de beaux projets. Angular sera toutefois plus lourd pour les projets simples, car il imposera des étapes/fichiers supplémentaires, qui peuvent faire perdre du temps quand la vitesse est clé. À l’inverse, Vue.js sera moins efficace sur les projets complexes si aucun framework complémentaire n’est choisi et que les phases d’architecture sont négligées.

Ces choix sont suffisamment importants pour être confiés à des experts. Contactez Neoxia, nous nous ferons un plaisir de vous aider !

Un grand merci à Cyrine Ben Salem, Ciro Alabrese, Sascha Braun, Marceau Meignent et arthur brunck pour le travail d’équipe qui a permis d’aboutir à cet article.

--

--