Suite à la publication des résultats de la grande enquête The State of JavaScript 2018, déjà dévoilés en exclusivité pour dotJS, nous avons proposé un sondage sur Twitter pour avoir un panel plus représentatif de la communauté francophone, sur une question en particulier.
Si vous aviez une formation sur un framework JavaScript à suivre en 2019, choisiriez-vous Angular, React ou VueJS ?
— alsacreations (@alsacreations) 21 novembre 2018
Trois frameworks majeurs se partagent actuellement le top 3. En plus d'autres plus "petits" tels qu'Ember ou Preact qui ont néanmoins de beaux projets et communautés à leur actif :
- React
- Angular
- Vue.js
Dans l'enquête State of JS de cette année, il y a bien des informations intéressantes à en tirer. Nous vous laissons les découvrir en détails en consultant le site officiel, et nous concentrons sur le "choix" d'un framework, sujet épineux à notre époque.
À travers la question de la popularité, les réponses possibles étaient proposés de la façon suivante : "je n'en ai jamais entendu parler", "j'en ai entendu parler mais je ne suis pas intéressé", "j'en ai entendu parler et j'aimerais l'apprendre", "je l'ai utilisé mais je ne voudrais plus", et "je l'ai utilisé et je le ferai encore".
On peut constater plusieurs faits marquants :
- Quasiment tout le monde a entendu parler d'Angular, React, Vue.js
- React est de loin le plus utilisé (64,8%)
- L'intérêt pour Vue.js est indéniable (46,6% de curieux + 28,8% souhaitant à nouveau l'utiliser)
- Angular cumule le plus grand nombre d'insatisfaits (33,8%) ce qui est énorme, sans compter les non intéressés (31,8%)
Ces résultats sont confirmés par notre plus modeste sondage Twitter.
Quelles raisons à cela ? Dans les grandes lignes, de façon non exhaustive :
Angular, dévoilé par Google en 2010-2012, affiche un résultat mitigé, victime d'une politique d'évolution floue, de versions (notamment la 2.0) ayant brisé la rétro-compatibilité et d'une certaine complexité pour se laisser dompter. Il est aussi réputé pour un style de programmation un peu maladroit qui peut favoriser l'écriture de bugs.
React, publié par Facebook en 2013, a rapidement séduit par ses performances, son DOM virtuel, ses composants réutilisables et sa gestion fine des états. Il est très orienté pour les développeurs JavaScript avancés avec sa syntaxe propre de templating (JSX) et la possibilité d'utiliser des fonctionnalités poussées (rendu côté serveur, modules et classes ECMAScript 6, TypeScript, etc). Il y a beaucoup de packages existants, ses outils de conception sont à la mode et il reste léger. Une difficulté pour les débutants reste la gestion des données et leur transit à travers toute la hiérarchie des composants, chose pour laquelle il faut souvent ajoindre Redux et donc un nouveau niveau de complexité.
Vue.js, le plus récent inauguré en 2014, a vu sa communauté croître grâce à une prise en main plus aisée. Ne serait-ce qu'en évoquant sa syntaxe de templating en quasi-HTML plus "naturelle" que JSX, et une très bonne documentation. Bien que le nombre de modules proposés ne soit pas encore aussi pléthorique que l'univers de React, celui-ci suit une courbe tout aussi croissante et suffit à la plupart des usages, même poussés. Imaginé par un développeur de Google ayant travaillé avec Angular et ayant quitté la firme pour tenter de proposer une alternative alliant le meilleur de React et d'Angular avec des outils user-friendly, il sait convaincre.
Dans tous les cas, nous constatons qu'ils ont une grande maturité dans le développement web, une bonne documentation et qu'ils sont utilisés ou soutenus par de grands noms ce qui n'est pas négligeable pour leur pérennité : Yahoo, Google, Facebook, Netflix, Sony, Airbnb, WhatsApp, Instagram, Adobe... vous y retrouverez l'ensemble des entreprises à qui ces frameworks permettent de trouver un cadre de développement pour leurs équipes, ainsi que des développeurs et développeuses souvent déjà initié(e)s à leur usage. Il y a encore cependant des phases de scepticisme quant à l'univers de Node notamment sur la gestion des dépendances, leur sécurité, et le fameux dossier node_modules.
Lorsque l'on est intégrateur web, récent ou depuis plusieurs années, développeur ou même designer, s'intéresser ou se plonger dans de tels outils peut être anxiogène. Bien sûr il faut toujours relativiser leur intérêt par rapport aux projets concrets que l'on peut mener à bien avec eux. Le choix peut sembler délicat, mais on peut tempérer si vous n'avez pas encore fait le premier pas :
- React et Vue.js sont un bon choix, quoiqu'il arrive
- Leur architecture et philosophie sont proches, en découvrir l'un vous permettra de prendre la main plus rapidement avec l'autre
- Les méthodes d'écriture de code JavaScript "modernes" seront nécessaires pour les apprivoiser
D'ailleurs, tout ceci tombe à pic ;) Alsacréations est aussi un organisme de formations qui vous propose de vous initier en 2019 à Vue.js ou à React, voilà de quoi ouvrir de belles perspectives.
Commentaires
ExtJs est - il loin derrière ?
Rallala, j'ai le nez fin avec React... :)
Pas de backbone dans la liste ? C'est pourtant une bonne alternative.
Quelques précision tout de même :)
- Le "State of JS" de cette année 2018 est faussé en ce qui concerne Angular, les auteurs ont "admit we didn’t do an especially good job" https://medium.freecodecamp.org/three-controversial-charts-from-the-state-of-js-2018-ec9dda45749#5a6f)
- DOM virtuel : pas seulement React, Vue.js aussi
- Rendu côté serveur (SSR) : les 3 offres cette possibilité
- Modules ES6 : les 3 l'utilisent via Webpack
- TypeScript : il a été popularisé par Angular (c'est son transpileur par défaut) et c'est au contraire dans le monde React qu'il est le moins utilisé
- Concernant cette "... difficulté pour les débutants reste la gestion des données et leur transit..." : c'est une conséquence du pattern composant donc c'est valable pour les 3 frameworks
- "Templating en quasi-HTML" : pas seulement Vue.js, Angular aussi
- Enfin au sujet d'Angular et "politique d'évolution floue" : non c'est très clair, après quelques années de AngularJS, Google a créé un nouveau framework très différent mais au lieu de trouver un autre nom, ils l'ont appelé Angular 2. Maintenant, depuis la version 4 (oui ils ont sauté la 3 ;) tout va bien, ils suivent la convention SemVer comme tout le monde et depuis 3 ans, aucun "breacking change" important.
super article plein d'infos