Pourquoi existe-t-il plusieurs framework web s’ils font la même chose (Angular, React, Vue, etc.) ?
Vous citez les 3 plus connus, qui ne se sont pas imposés par hasard.
Dire qu'ils font la même chose n'est pas exact (trop de posts ont déjà expliqué les différences entre eux, je vous ramène à une de mes réponses :Réponse de David Miolard à Quels sont les meilleurs frameworks lorsqu'on a besoin de développer une interface Web, une application mobile et un logiciel pour ordinateur de bureau ? )
Ceci dit, votre question est intéressante.
Quand vous avez des outils de qualité, vous vous doutez bien que d'autres marques en font également. Je veux dire que le problème n'est pas qu'il y ait plusieurs frameworks web, vu que tout le monde préfère avoir le choix.
Le mal absolu, c'est la guerre des frameworks Javascript, qui fait rage depuis quelques années . J'insiste… En PHP, Python et les autres, il n'y a pas ce problème ; les bons outils sont stabilisés et pérennes (Symfony, Django, Laravel…).
Mais en front, c'est devenu du grand n'importe quoi : tous les mois sortent de nouveaux frameworks JS, dont la durée de vie est comparable à celle des larves.
Sans compter que les grandes sociétés derrière certains frameworks ont leur buzz à entretenir. Ca passe par des nouvelles versions, qui ne sont bien souvent que des patchs, mais encore une fois, comment blâmer ces gens, alors que les usagers veulent de la nouveauté ?
C'est pédagogique pour beaucoup de jeunes programmeurs que j'ai déjà vu au fil des années s'enflammer pour tel ou tel nouveau framework, avant de réaliser en ayant pris de la bouteille, que cela importait peu.
On nous paie pour résoudre des problèmes, et c'est ce qui nous passionne le plus en général. Donc, peu importe l'outil, si le programmeur aime ce qu'il fait, il finira par ne plus avoir d'affect pour les outils, et prendra plaisir à choisir les plus adéquats.
Pourquoi JavaScript est-il autant critiqué tout en étant le langage le plus communément utilisé ?
Nous pouvons constaté trois problèmes principaux liés aux JavaScript.
Premièrement, certaines personnes pourraient venir critiquer le JavaScript car ce n'est pas un langage typé. Ce qui veut dire qu'il y a moins de contrainte liées à l'utilisation des variables, des fonctions, etc. Le typage dynamique vient avec ses avantages et ses inconvénients.
Le langage est moins strict, certes, ce qui dérange certains, en revanche, il est plus accessible aux débutants. La facilité et l'accessibilité du JavaScript, peut déranger certains puristes qui ne le conçoivent pas comme un réel langage de programmation (par définition, c'en est un). Ceci dit, je tiens à préciser que le débutant et le confirmé ne code pas de la même manière, il y a bien une différence de niveau perceptible au niveau du code.
Le deuxième point concerne les comportements quelques peu étrange de certaines opérations en JavaScript.
https://i.redd.it/4skcofasa1p01.png
(exemple typique d'image que l'on peut retrouver sur le net à propos des comportements étranges de JavaScript)
Après tout, même si tout de même on peut prendre ça à la légère, ce n'est pas ça qui rendra votre code totalement incohérent.
Le troisième point, c'est sa popularité.
La popularité, c'est bien, mais pas n'importe comment. Même si le langage JavaScript est populaire, il faut se demander si on en a l'utilité. Pour rappel, JavaScript est un langage axé client qui, grâce à nodejs notamment, peut désormais être utilisé côté serveur.
Ceci présente des avantages, mais aussi des inconvénients qu'il convient de ne pas négliger. Le choix d'un langage de programmation ne se fait pas au hasard, et si aujourd'hui certaines entreprises ont fait le choix d'adopter JavaScript pour leurs applications web, ce n'est pas forcement pertinents pour tout le monde (il faut établir ses besoins en étudiant par exemple la scalabilité attendu, les restrictions techniques, la complexité des opérations à effectuer ainsi que ses préférences personnelles) et les autres langages de programmation côté serveur ne sont pas à rejeter.
On pourrait aussi bien parler du gestionnaire de package npm qui reste critiqué par la poids du dossier node_modules qu'il génère lors d'installation de package et bien d'autres.
https://i.redd.it/tfugj4n3l6ez.png
(image très populaire qui décrit cet aspect)
Alors, à chacun de forger son avis personnel.