Nelle SPA (Single Page Application) troviamo una gestione delle pagine indipendente dall'url: l'aggiornamento dell'url non corrisponde con un ri-caricamento della pagina, ma il layout viene modificato e/o aggiornato attraverso funzioni JavaScript. All'interno di un framework la funzionalità è implementata out-of-the-box, ma se avessimo un nostro portale, in cui dover gestire poche pagine, come potremmo fare?
La metodologia più conosciuta è usare l'history.pushState.
function navigateTo(event) {
// gestione dell'evento
event.preventDefault();
// set url
window.history.pushState(null, '', 'my-page');
// aggiornamento pagina
changePage();
}Questa funzione presenta un problema: deve essere scritta più volte all'interno della pagina, non avremo quindi un punto unico in cui gestire la logica, e non è adatta alla gestione della navigazione tramite form submit.
Per ovviare a ciò, aggiungiamo un listener all'evento navigate dell'oggetto navigation. In questo modo avremo un punto centralizzato di controllo su qualsiasi evento che porterà a un cambio di url della pagina.
navigation.addEventListener('navigate', navigateEvent => {
switch (navigateEvent.destination.url) {
case 'https://example.com/':
navigateEvent.transitionWhile(loadIndexPage());
break;
case 'https://example.com/hello':
navigateEvent.transitionWhile(loadHelloPage());
break;
}
});
La logica è pressochè invariata: all'esecuzione di una navigazione, l'evento viene intercettato e gestito. In base all'url della pagina viene eseguita la funzione transitionWhile, un metodo che mette il client in attesa della risoluzione di una promise, passata come argomento, la quale conterrà le istruzioni per aggiornare la pagina coerentemente con l'url fornito.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Centralizzare gli endpoint AI Foundry con Azure API Management
Ridimensionamento automatico input tramite CSS
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Esporre un server MCP con Azure API Management
Definire il colore di una scrollbar HTML tramite CSS
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Analizzare il contenuto di una issue con GitHub Models e AI
Configurare automaticamente un webhook in Azure DevOps
Fornire parametri ad un Web component HTML
Impostare il tipo di supporto dei campi Json in Entity Framework con Sql Server
Eseguire i pre-commit hook di git con dependabot
Controllare la velocità di spostamento su una pagina HTML
I più letti di oggi
- Global Azure 2026 - ASPItalia.com - Milano
- L'agenda di #GlobalAzure 2026 by ASPItalia.com è pronta: da #AKS a #AIFoundry, passando per #MCP, #Fabric e tanto altro.Ci vediamo il 16 aprile a Milano! https://aspit.co/globalazure-26
- Future Dev Day - Milano
- Il nuovo persistent state in Blazor
- Eseguire i pre-commit hook di git con dependabot




