# Crea un'app bancaria Parte 1: Modelli HTML e rotte in un'app web Quando il computer di guida dell'Apollo 11 navigò verso la luna nel 1969, dovette passare da un programma all'altro senza riavviare l'intero sistema. Le moderne applicazioni web funzionano in modo simile: cambiano ciò che vedi senza ricaricare tutto da zero. Questo crea l'esperienza fluida e reattiva che gli utenti si aspettano oggi. A differenza dei siti web tradizionali che ricaricano intere pagine per ogni interazione, le moderne app web aggiornano solo le parti che necessitano di modifiche. Questo approccio, simile a come il centro di controllo passa da un display all'altro mantenendo una comunicazione costante, crea quell'esperienza fluida che ci aspettiamo. Ecco cosa rende la differenza così evidente: | App tradizionali multi-pagina | App moderne a pagina singola | |------------------------------|------------------------------| | **Navigazione** | Ricarica completa della pagina per ogni schermata | Cambio istantaneo dei contenuti | | **Prestazioni** | Più lente a causa del download completo di HTML | Più veloci con aggiornamenti parziali | | **Esperienza utente** | Flash di pagina bruschi | Transizioni fluide, simili a un'app | | **Condivisione dati** | Difficile tra le pagine | Gestione dello stato semplificata | | **Sviluppo** | Molti file HTML da mantenere | Un unico HTML con modelli dinamici | **Comprendere l'evoluzione:** - **App tradizionali** richiedono richieste al server per ogni azione di navigazione - **SPA moderne** si caricano una volta e aggiornano i contenuti dinamicamente usando JavaScript - **Le aspettative degli utenti** ora favoriscono interazioni istantanee e senza interruzioni - **Vantaggi prestazionali** includono una riduzione della larghezza di banda e risposte più rapide In questa lezione, costruiremo un'app bancaria con più schermate che fluiscono insieme senza interruzioni. Come gli scienziati usano strumenti modulari che possono essere riconfigurati per esperimenti diversi, utilizzeremo modelli HTML come componenti riutilizzabili che possono essere visualizzati quando necessario. Lavorerai con modelli HTML (progetti riutilizzabili per diverse schermate), routing JavaScript (il sistema che passa da una schermata all'altra) e l'API di cronologia del browser (che mantiene il funzionamento del pulsante "indietro" come previsto). Queste sono le stesse tecniche fondamentali utilizzate dai framework come React, Vue e Angular. Alla fine, avrai un'app bancaria funzionante che dimostra i principi professionali delle applicazioni a pagina singola. ## Quiz Pre-Lettura [Quiz pre-lettura](https://ff-quizzes.netlify.app/web/quiz/41) ### Cosa ti serve Avremo bisogno di un server web locale per testare la nostra app bancaria – non preoccuparti, è più semplice di quanto sembri! Se non ne hai già uno configurato, installa semplicemente [Node.js](https://nodejs.org) e esegui `npx lite-server` dalla cartella del tuo progetto. Questo comando utile avvia un server locale e apre automaticamente la tua app nel browser. ### Preparazione Sul tuo computer, crea una cartella chiamata `bank` con un file chiamato `index.html` al suo interno. Partiremo da questo [boilerplate HTML](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Ecco cosa fornisce questo boilerplate:** - **Stabilisce** la struttura del documento HTML5 con una dichiarazione DOCTYPE corretta - **Configura** la codifica dei caratteri come UTF-8 per il supporto del testo internazionale - **Abilita** il design responsivo con il tag meta viewport per la compatibilità mobile - **Imposta** un titolo descrittivo che appare nella scheda del browser - **Crea** una sezione corpo pulita dove costruiremo la nostra applicazione > 📁 **Anteprima della struttura del progetto** > > **Alla fine di questa lezione, il tuo progetto conterrà:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Responsabilità dei file:** > - **index.html**: Contiene tutti i modelli e fornisce la struttura dell'app > - **app.js**: Gestisce il routing, la navigazione e la gestione dei modelli > - **Modelli**: Definiscono l'interfaccia utente per il login, la dashboard e altre schermate --- ## Modelli HTML I modelli risolvono un problema fondamentale nello sviluppo web. Quando Gutenberg inventò la stampa a caratteri mobili negli anni '40 del Quattrocento, si rese conto che invece di scolpire intere pagine, poteva creare blocchi di lettere riutilizzabili e disporli secondo necessità. I modelli HTML funzionano sullo stesso principio: invece di creare file HTML separati per ogni schermata, si definiscono strutture riutilizzabili che possono essere visualizzate quando necessario. Pensa ai modelli come a progetti per diverse parti della tua app. Proprio come un architetto crea un progetto e lo utilizza più volte invece di ridisegnare stanze identiche, noi creiamo i modelli una volta e li utilizziamo quando necessario. Il browser tiene nascosti questi modelli fino a quando JavaScript li attiva. Se vuoi creare più schermate per una pagina web, una soluzione potrebbe essere creare un file HTML per ogni schermata che vuoi visualizzare. Tuttavia, questa soluzione presenta alcune difficoltà: - Devi ricaricare l'intero HTML quando cambi schermata, il che può essere lento. - È difficile condividere dati tra le diverse schermate. Un altro approccio è avere un solo file HTML e definire più [modelli HTML](https://developer.mozilla.org/docs/Web/HTML/Element/template) usando l'elemento `