Avez-vous une question? (216) 97 656 803 hajjriadh@gmail.com
JavaScript

Panorama des frameworks : Angular, React et Vue

Comprenez ce qu'apporte un framework front-end (composants, réactivité, routage) et découvrez Angular, React et Vue à travers le même composant écrit et testé dans les trois. La leçon compare leurs ap...

0 chapitres 0 QCM Accès gratuit
Dans cet article

À propos de ce cours

Comprenez ce qu'apporte un framework front-end (composants, réactivité, routage) et découvrez Angular, React et Vue à travers le même composant écrit et testé dans les trois. La leçon compare leurs approches, leurs outils et leurs usages, présente d'autres solutions comme Svelte, et donne des critères pour choisir selon le projet et l'équipe. Avec des activités et leurs corrigés.
  1. Objectifs

    • Comprendre ce qu'apporte un framework par rapport au JavaScript « vanilla ».
    • Connaître les notions communes : composants, réactivité, liaison de données, routage.
    • Découvrir Angular, React et Vue à travers le même composant.
    • Savoir comparer ces outils et choisir selon le projet.
  2. Pourquoi un framework ?

    • Dans les chapitres précédents, vous avez manipulé le DOM à la main : sélectionner un élément, créer des balises, mettre à jour un texte à chaque changement de donnée. Pour une application de plusieurs dizaines d'écrans, ce travail devient long et source d'erreurs : on oublie de mettre à jour un affichage, le code se répète, l'état de l'application est dispersé.
    • Un framework front-end apporte une structure commune :
      • les composants: des blocs réutilisables qui regroupent le HTML, le style et le comportement (une carte, un formulaire, une barre de navigation) ;
      • la réactivité: quand une donnée change, l'affichage se met à jour automatiquement, sans textContent ni createElement;
      • le routage: plusieurs « pages » dans une seule application (SPA), sans rechargement ;
      • des outils: création de projet, tests, build, conventions partagées par toute l'équipe.
    • Bonne nouvelle : tout ce que vous avez appris reste indispensable. Les frameworks sont écrits en JavaScript (ou TypeScript) et utilisent les modules, les fonctions fléchées, les classes, les promesses, fetch…

    Panorama des frameworks : Angular, React et Vue comparés

  3. Le même composant dans les trois frameworks

    • Objectif : un composant qui affiche un titre reçu en paramètre, un compteur de stagiaires inscrits, un bouton « Inscrire » et le message « Le groupe est complet ! » à partir de 3 inscrits.
    • Ces trois versions ont été testées avec Angular 22, React 19 et Vue 3.5 : elles produisent exactement le même résultat.

    Angular (fichier compteur.ts)

    import { Component, computed, input, signal } from "@angular/core";
    
    @Component({
      selector: "app-compteur",
      template: `
        <div class="card p-3">
          <h2>{{ titre() }}</h2>
          <p>Stagiaires inscrits : {{ inscrits() }}</p>
          <button (click)="inscrire()">Inscrire</button>
          @if (complet()) {
            <p>Le groupe est complet !</p>
          }
        </div>
      `,
    })
    export class Compteur {
      titre = input("Formation Angular");
      inscrits = signal(0);
      complet = computed(() => this.inscrits() >= 3);
    
      inscrire() {
        this.inscrits.update((n) => n + 1);
      }
    }
    • Un composant est une classe TypeScript décorée par @Component. Les signaux (signal, computed, input) gèrent la réactivité ; @if affiche un bloc sous condition ; (click) lie un événement.

    React (fichier App.jsx)

    import { useState } from "react";
    
    function Compteur({ titre }) {
      const [inscrits, setInscrits] = useState(0);
    
      return (
        <div className="card p-3">
          <h2>{titre}</h2>
          <p>Stagiaires inscrits : {inscrits}</p>
          <button onClick={() => setInscrits(inscrits + 1)}>Inscrire</button>
          {inscrits >= 3 && <p>Le groupe est complet !</p>}
        </div>
      );
    }
    
    export default function App() {
      return <Compteur titre="Formation React" />;
    }
    • Un composant est une fonction qui renvoie du JSX (du HTML écrit dans le JavaScript). Le hook useState gère l'état ; les paramètres arrivent dans les props ({ titre }). On écrit className au lieu de class.

    Vue (fichier App.vue)

    <script setup>
    import { ref, computed } from "vue";
    
    const props = defineProps({ titre: { type: String, default: "Formation Vue" } });
    const inscrits = ref(0);
    const complet = computed(() => inscrits.value >= 3);
    </script>
    
    <template>
      <div class="card p-3">
        <h2>{{ props.titre }}</h2>
        <p>Stagiaires inscrits : {{ inscrits }}</p>
        <button @click="inscrits++">Inscrire</button>
        <p v-if="complet">Le groupe est complet !</p>
      </div>
    </template>
    • Un composant est un fichier .vue en trois parties : <script setup>, <template> et éventuellement <style>. ref et computed gèrent la réactivité ; v-if et @click sont des directives.
  1. Angular

    • Framework complet maintenu par Google, écrit en TypeScript (version 22 en novembre 2026).
    • Tout est fourni : composants, routage, formulaires, client HTTP, tests, internationalisation, et une interface en ligne de commande (Angular CLI) qui génère le code.
    • Très utilisé dans les grandes entreprises et les administrations pour les applications de gestion. C'est le framework étudié dans le Module 10 – Développement Front-End.
    • Création d'un projet : npm install -g @angular/cli puis ng new mon-app et ng serve.
  2. React

    • Bibliothèque d'interfaces maintenue par Meta (version 19). Elle ne s'occupe que de l'affichage ; on choisit les autres outils (routage, gestion des données…).
    • La plus utilisée au monde, avec un écosystème immense ; React Native permet de créer des applications mobiles avec les mêmes principes.
    • Pour un site complet, on utilise souvent un framework construit sur React, comme Next.js.
    • Création d'un projet : npm create vite@latest mon-app -- --template react puis npm install et npm run dev.
  3. Vue

    • Framework progressif créé par Evan You (version 3.5), développé par une communauté indépendante.
    • Réputé pour sa courbe d'apprentissage douce : on peut l'ajouter à une seule page existante ou construire une application complète avec Vue Router et Pinia. Nuxt joue pour Vue le rôle de Next.js pour React.
    • Création d'un projet : npm create vue@latest puis npm install et npm run dev.
  4. Comparaison

  5. AngularReactVue
    TypeFramework completBibliothèque d'interfaceFramework progressif
    Maintenu parGoogleMeta et la communautéEvan You et la communauté
    LangageTypeScript obligatoireJavaScript ou TypeScript + JSXJavaScript ou TypeScript
    Écriture d'un composantClasse + décorateur @ComponentFonction qui renvoie du JSXFichier .vue (script, template, style)
    RéactivitéSignaux (signal, computed)Hooks (useState, useEffect)ref, reactive, computed
    Outils fournisPresque tout (CLI, routage, HTTP, formulaires)À choisir (ou Next.js)Officiels mais séparés (Router, Pinia)
    Prise en mainPlus longue, très structuréeMoyenneLa plus douce
    Usage typiqueGrandes applications de gestionSites et applications de toutes tailles, mobileProjets de toutes tailles, intégration progressive
  • D'autres outils existent : Svelte (un compilateur qui produit un code très léger), Solid, Astro (sites de contenu)… Les concepts restent les mêmes.
  • Comment choisir ?

    • L'équipe et l'entreprise: le meilleur framework est souvent celui que l'équipe maîtrise déjà et que l'entreprise utilise.
    • La taille du projet: une petite page interactive n'a parfois besoin d'aucun framework ; une grande application de gestion profite d'un cadre complet comme Angular.
    • Le marché local de l'emploi: consultez les offres d'emploi de votre région.
    • Les bases d'abord: un développeur qui maîtrise JavaScript passe d'un framework à l'autre en quelques semaines. L'inverse est beaucoup plus difficile.
  • Activités

  • Activité 1 : lire le code

    • Dans chacune des trois versions du compteur, repérez : (a) où est déclaré l'état inscrits; (b) comment on le modifie ; (c) comment on affiche une donnée dans le HTML ; (d) comment on affiche un bloc sous condition.

    Activité 2 : essayer deux frameworks

    • Créez un projet React et un projet Vue avec Vite. Remplacez le contenu de App.jsx et de App.vue par les exemples de la leçon et vérifiez le fonctionnement.
    • Ajoutez un bouton « Désinscrire » qui ne descend jamais sous 0.
    • Déposez les deux projets dans un dépôt GitHub js-frameworks (deux dossiers).

    Activité 3 : recherche

    • Sur un site d'offres d'emploi de votre région, comptez les offres qui mentionnent Angular, React et Vue. Présentez le résultat dans un tableau et commentez-le en trois phrases.

    Activité 4 : choisir

    • Pour chaque projet, proposez un choix (sans framework, Angular, React ou Vue) et justifiez : (a) le site vitrine d'une boulangerie avec un formulaire de contact ; (b) l'application de gestion des stagiaires d'un centre de formation, développée par une équipe de 6 personnes ; (c) une application web et mobile de réservation ; (d) un module interactif à ajouter dans une page existante.
    Corrigé de l'activité 1. Angular : (a) inscrits = signal(0); (b) this.inscrits.update(n => n + 1); (c) {{ inscrits() }}; (d) @if (complet()) { … }. React : (a) const [inscrits, setInscrits] = useState(0); (b) setInscrits(inscrits + 1); (c) {inscrits}; (d) {inscrits >= 3 && <p>…</p>}. Vue : (a) const inscrits = ref(0); (b) inscrits++ dans le template (inscrits.value++ dans le script) ; (c) {{ inscrits }}; (d) v-if="complet".
    Activité 4 (proposition) : (a) sans framework (HTML, CSS, un peu de JavaScript) ; (b) Angular (grande application de gestion, équipe, cadre complet) ; (c) React avec React Native, pour partager les compétences entre web et mobile ; (d) Vue, qui s'intègre progressivement dans une page existante.
  • À retenir

    • Un framework apporte composants, réactivité et routage pour les applications de grande taille.
    • Angular: complet, TypeScript, Google. React: bibliothèque la plus répandue, JSX, Meta. Vue: progressif, fichiers .vue, communauté.
    • Les trois reposent sur JavaScript moderne : modules, classes, fonctions fléchées, promesses.
    • Le choix dépend de l'équipe, du projet et du marché ; la maîtrise de JavaScript reste la base de tout.

    Sources : nodejs.org, docs.npmjs.com, vite.dev, typescriptlang.org, angular.dev, react.dev, vuejs.org, MDN Web Docs.