# Construiește o Aplicație Bancară Partea 1: Șabloane HTML și Rute într-o Aplicație Web ```mermaid journey title Călătoria ta în dezvoltarea aplicației bancare section Noțiuni fundamentale SPA Înțelege aplicațiile single-page: 3: Student Învață conceptele de șabloane: 4: Student Stăpânește manipularea DOM: 4: Student section Sisteme de rutare Implementează rutarea pe partea clientului: 4: Student Gestionează istoricul browserului: 5: Student Creează sisteme de navigare: 5: Student section Modele profesionale Construiește o arhitectură modulară: 5: Student Aplică cele mai bune practici: 5: Student Creează experiențe pentru utilizatori: 5: Student ``` Când calculatorul de navigare Apollo 11 a navigat către lună în 1969, a trebuit să comute între diferite programe fără a reporni întregul sistem. Aplicațiile web moderne funcționează similar – schimbă ce vezi fără a reîncărca totul de la zero. Acest lucru creează experiența fluidă și receptivă pe care utilizatorii o așteaptă astăzi. Spre deosebire de site-urile web tradiționale care reîncarcă pagini întregi pentru fiecare interacțiune, aplicațiile web moderne actualizează doar părțile care trebuie schimbate. Această abordare, la fel cum centrul de control al misiunii comută între diferite afișaje menținând comunicarea constantă, creează acea experiență fluidă la care ne-am obișnuit. Iată ce face diferența atât de dramatică: | Aplicații Multi-Pagină Tradiționale | Aplicații Moderne Single-Page | |-------------------------------------|-------------------------------| | **Navigare** | Reîncărcare completă a paginii pentru fiecare ecran | Comutare instantanee a conținutului | | **Performanță** | Mai lentă din cauza descărcărilor complete HTML | Mai rapidă cu actualizări parțiale | | **Experiență Utilizator** | Clipiri bruște ale paginii | Tranziții line, asemănătoare aplicațiilor | | **Partajare Date** | Dificil între pagini | Management ușor al stării | | **Dezvoltare** | Mai multe fișiere HTML de întreținut | Un singur HTML cu șabloane dinamice | **Înțelegerea evoluției:** - **Aplicațiile tradiționale** necesită cereri către server pentru fiecare acțiune de navigare - **Spațiile moderne Single-Page** se încarcă o dată și actualizează conținutul dinamic folosind JavaScript - **Așteptările utilizatorilor** favorizează acum interacțiuni instantanee, fluide - **Beneficiile performanței** includ reducerea lățimii de bandă și răspunsuri mai rapide În această lecție, vom construi o aplicație bancară cu mai multe ecrane care curg împreună fără întreruperi. La fel cum oamenii de știință folosesc instrumente modulare care pot fi reconfigurate pentru experimente diferite, vom folosi șabloane HTML ca componente reutilizabile care pot fi afișate după necesitate. Vei lucra cu șabloane HTML (planșe reutilizabile pentru diferite ecrane), rutare JavaScript (sistemul care comută între ecrane) și API-ul de istorie al browserului (care menține butonul „înapoi” funcțional). Acestea sunt aceleași tehnici fundamentale folosite de frameworkuri precum React, Vue și Angular. La final, vei avea o aplicație bancară funcțională care demonstrează principiile profesionale ale aplicațiilor single-page. ```mermaid mindmap root((Single-Page Applications)) Architecture Sistem Șablon Rutare pe partea clientului Gestionarea Stării Tratarea Evenimentelor Templates Componente Reciclabilă Conținut Dinamic Manipularea DOM Comutare Conținut Routing Gestionarea URL-ului API Istoric Logică Navigație Integrare Browser User Experience Navigare Rapidă Tranziții Line Stare Consistentă Interacțiuni Moderne Performance Cereri Server Reduse Tranziții Pagină Mai Rapide Utilizare Eficientă a Resurselor Responsivitate Îmbunătățită ``` ## Chestionar Pre-Lecție [Chestionar pre-lectură](https://ff-quizzes.netlify.app/web/quiz/41) ### Ce Vei Avea Nevoie Avem nevoie de un server web local pentru a testa aplicația bancară – nu-ți face griji, este mai ușor decât pare! Dacă nu ai deja unul configurat, instalează pur și simplu [Node.js](https://nodejs.org) și rulează `npx lite-server` din folderul proiectului tău. Această comandă utilă pornește un server local și deschide automat aplicația în browser. ### Pregătire Pe calculatorul tău, creează un folder numit `bank` cu un fișier numit `index.html` în interior. Vom începe de la acest [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code) HTML: ```html Bank App ``` **Ce oferă acest boilerplate:** - **Stabilește** structura documentului HTML5 cu declarația corectă DOCTYPE - **Configurează** codarea caracterelor ca UTF-8 pentru suport internațional al textului - **Activează** designul responsive cu tag-ul meta viewport pentru compatibilitate mobilă - **Setează** un titlu descriptiv care apare în fila browserului - **Creează** o secțiune body curată unde vom construi aplicația noastră > 📁 **Previzualizare Structură Proiect** > > **Până la finalul acestei lecții, proiectul tău va conține:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Responsabilitățile fișierelor:** > - **index.html**: Conține toate șabloanele și oferă structura aplicației > - **app.js**: Gestionează rutarea, navigarea și managementul șabloanelor > - **Șabloane**: Definirea UI-ului pentru pagini de login, dashboard și alte ecrane --- ## Șabloane HTML Șabloanele rezolvă o problemă fundamentală în dezvoltarea web. Când Gutenberg a inventat tiparul cu caractere mobile în anii 1440, și-a dat seama că în loc să sculpteze pagini întregi, poate crea blocuri de litere reutilizabile și să le aranjeze după necesitate. Șabloanele HTML funcționează pe același principiu – în loc să creezi fișiere HTML separate pentru fiecare ecran, definești structuri reutilizabile care pot fi afișate după nevoie. ```mermaid flowchart TD A["📋 Definiția Șablonului"] --> B["💬 Ascuns în DOM"] B --> C["🔍 JavaScript Găsește Șablonul"] C --> D["📋 Clonează Conținutul Șablonului"] D --> E["🔗 Atașează la DOM Vizibil"] E --> F["👁️ Utilizatorul Vede Conținutul"] G["Șablon de Autentificare"] --> A H["Șablon de Panou"] --> A I["Șabloane Viitoare"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Gândește șabloanele ca planuri pentru diferite părți ale aplicației tale. Așa cum un arhitect creează un plan o singură dată și îl folosește de mai multe ori în loc să redeseneze camere identice, noi creăm șabloane o dată și le instanțiem după nevoie. Browserul păstrează aceste șabloane ascunse până când JavaScript le activează. Dacă vrei să creezi multiple ecrane pentru o pagină web, o soluție ar fi să creezi un fișier HTML pentru fiecare ecran pe care vrei să-l afișezi. Totuși, această soluție vine cu unele inconvenient: - Trebuie să reîncarci întregul HTML când schimbi ecranul, ceea ce poate fi lent. - Este dificil să partajezi date între diferite ecrane. O altă abordare este să ai un singur fișier HTML și să definești multiple [șabloane HTML](https://developer.mozilla.org/docs/Web/HTML/Element/template) folosind elementul `