# Construire une application bancaire Partie 1 : Modèles HTML et Routes dans une application web ```mermaid journey title Votre Parcours de Développement d'App Bancaire section Fondamentaux des SPA Comprendre les applications monopage : 3: Student Apprendre les concepts de templates : 4: Student Maîtriser la manipulation du DOM : 4: Student section Systèmes de Routage Implémenter le routage côté client : 4: Student Gérer l'historique du navigateur : 5: Student Créer des systèmes de navigation : 5: Student section Modèles Professionnels Construire une architecture modulaire : 5: Student Appliquer les bonnes pratiques : 5: Student Créer des expériences utilisateur : 5: Student ``` Lorsque l'ordinateur de guidage d'Apollo 11 a navigué vers la lune en 1969, il a dû basculer entre différents programmes sans redémarrer tout le système. Les applications web modernes fonctionnent de manière similaire – elles changent ce que vous voyez sans recharger tout depuis le début. Cela crée l'expérience fluide et réactive que les utilisateurs attendent aujourd'hui. Contrairement aux sites Web traditionnels qui rechargent des pages entières à chaque interaction, les applications web modernes mettent à jour uniquement les parties nécessitant un changement. Cette approche, un peu comme le centre de contrôle qui bascule entre différents affichages tout en maintenant une communication constante, crée cette expérience fluide que nous avons appris à attendre. Voici ce qui rend la différence si spectaculaire : | Applications multi-pages traditionnelles | Applications modernes monopages | |-----------------------------------------|---------------------------------| | **Navigation** | Rechargement complet de la page à chaque écran | Changement instantané du contenu | | **Performance** | Plus lent à cause du téléchargement complet du HTML | Plus rapide avec des mises à jour partielles | | **Expérience utilisateur** | Flashs de page perturbants | Transitions fluides semblables à une application | | **Partage des données** | Difficile entre les pages | Gestion facile de l'état | | **Développement** | Plusieurs fichiers HTML à maintenir | Un seul HTML avec des modèles dynamiques | **Comprendre l'évolution :** - **Les applications traditionnelles** nécessitent des requêtes serveur pour chaque action de navigation - **Les SPA modernes** se chargent une fois et mettent à jour le contenu dynamiquement via JavaScript - **Les attentes des utilisateurs** privilégient désormais des interactions instantanées et fluides - **Les bénéfices en performance** incluent une bande passante réduite et des réponses plus rapides Dans cette leçon, nous allons construire une application bancaire avec plusieurs écrans qui s'enchaînent parfaitement. Comme les scientifiques utilisent des instruments modulaires pouvant être reconfigurés pour différentes expériences, nous utiliserons des modèles HTML comme composants réutilisables qui peuvent être affichés selon les besoins. Vous travaillerez avec des modèles HTML (plans réutilisables pour différents écrans), le routage JavaScript (le système qui bascule entre les écrans) et l’API historique du navigateur (qui maintient le bon fonctionnement du bouton retour). Ce sont les mêmes techniques fondamentales utilisées par des frameworks comme React, Vue et Angular. À la fin, vous aurez une application bancaire fonctionnelle qui démontre les principes professionnels des applications monopages. ```mermaid mindmap root((Applications à page unique)) Architecture Système de modèles Routage côté client Gestion d'état Gestion des événements Templates Composants réutilisables Contenu dynamique Manipulation du DOM Changement de contenu Routing Gestion des URL API historique Logique de navigation Intégration navigateur User Experience Navigation rapide Transitions fluides État cohérent Interactions modernes Performance Réduction des requêtes serveur Transitions de page plus rapides Utilisation efficace des ressources Meilleure réactivité ``` ## Questionnaire préalable à la leçon [Questionnaire préalable à la leçon](https://ff-quizzes.netlify.app/web/quiz/41) ### Ce dont vous aurez besoin Nous aurons besoin d’un serveur web local pour tester notre application bancaire – ne vous inquiétez pas, c’est plus simple que ça en a l’air ! Si vous n’en avez pas déjà un configuré, installez simplement [Node.js](https://nodejs.org) et lancez `npx lite-server` depuis votre dossier de projet. Cette commande pratique démarre un serveur local et ouvre automatiquement votre application dans le navigateur. ### Préparation Sur votre ordinateur, créez un dossier nommé `bank` avec un fichier `index.html` à l’intérieur. Nous partirons de ce [modèle HTML](https://fr.wikipedia.org/wiki/Boilerplate) : ```html Bank App ``` **Voici ce que ce modèle fournit :** - **Établit** la structure du document HTML5 avec la déclaration DOCTYPE correcte - **Configure** l’encodage des caractères en UTF-8 pour la prise en charge internationale - **Active** le design responsive avec la balise meta viewport pour la compatibilité mobile - **Définit** un titre descriptif qui apparaît dans l'onglet du navigateur - **Crée** une section body propre où nous construirons notre application > 📁 **Aperçu de la structure du projet** > > **À la fin de cette leçon, votre projet contiendra :** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Responsabilités des fichiers :** > - **index.html** : Contient tous les modèles et fournit la structure de l’application > - **app.js** : Gère le routage, la navigation et la gestion des modèles > - **Modèles** : Définissent l’interface utilisateur pour la connexion, le tableau de bord et autres écrans --- ## Modèles HTML Les modèles résolvent un problème fondamental dans le développement web. Lorsque Gutenberg a inventé l’imprimerie à caractères mobiles dans les années 1440, il s’est rendu compte qu’au lieu de sculpter des pages entières, il pouvait créer des blocs de lettres réutilisables et les disposer selon les besoins. Les modèles HTML fonctionnent selon le même principe – au lieu de créer des fichiers HTML séparés pour chaque écran, vous définissez des structures réutilisables qui peuvent être affichées selon les besoins. ```mermaid flowchart TD A["📋 Définition du Modèle"] --> B["💬 Caché dans le DOM"] B --> C["🔍 JavaScript Trouve le Modèle"] C --> D["📋 Cloner le Contenu du Modèle"] D --> E["🔗 Attacher au DOM Visible"] E --> F["👁️ L'Utilisateur Voit le Contenu"] G["Modèle de Connexion"] --> A H["Modèle de Tableau de Bord"] --> A I["Modèles Futurs"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Considérez les modèles comme des plans pour différentes parties de votre application. Tout comme un architecte crée un plan et le réutilise plusieurs fois au lieu de redessiner des pièces identiques, nous créons les modèles une fois puis les instancions selon le besoin. Le navigateur garde ces modèles cachés jusqu’à ce que JavaScript les active. Si vous souhaitez créer plusieurs écrans pour une page web, une solution serait de créer un fichier HTML pour chaque écran que vous voulez afficher. Cependant, cette solution présente quelques inconvénients : - Vous devez recharger tout le HTML à chaque changement d’écran, ce qui peut être lent. - Il est difficile de partager des données entre les différents écrans. Une autre approche consiste à n’avoir qu’un seul fichier HTML et définir plusieurs [modèles HTML](https://developer.mozilla.org/fr/docs/Web/HTML/Element/template) en utilisant l’élément `