Grazie a .NET 9 abbiamo molta più elasticità nella produzione di applicativi Blazor. Non occorrà più scegliere a priori la modalità Server o WebAsembly, ma sarà in carico allo sviluppatore decidere quale tipologia utilizzare per ogni pagina.
Creando un nuovo progetto Blazor verrano automaticamente creati il progetto startup e una libreria di componenti Razor che verrà referenziata all'interno del Program.cs
app.MapRazorComponents<App>() .AddInteractiveServerRenderMode() .AddInteractiveWebAssemblyRenderMode() .AddAdditionalAssemblies(typeof(MiaBlazorApp.Client._Imports).Assembly);
Questa sintassi non ci è nuova, ne abbiamo già parlato all'interno dello script #1471, la novità è all'interno della view e nel suo modo di comprendere il funzionamento corrente. La situazione fino a .NET 8 era la seguente
@(OperatingSystem.IsBrowser() ? "Wasm" : "Server")
Ma ora, con .NET 9, troviamo molte più funzionalità, eccone un esempio riassuntivo
@page "/test" @rendermode InteractiveAuto <h2>Render mode: @RendererInfo.Name</h2> @if (RendererInfo.IsInteractive) { <button class="btn btn-primary" @onclick="IncrementCount">Click me</button> } else { <p>One moment...</p> }
Affidandoci alla proprietà RendererInfo possiamo ottenere varie informazioni.
La prima è l'effettiva modalità in cui sta sta girando la view: RendererInfo.Name restituirà Server o WebAssembly. La modalità Server sarà verosimilmente visibile solo al primo caricamento, per dare il tempo materiale al browser di aggiungere alla cache tutte le risorse necessarie per eseguire il WebAssembly.
La seconda proprietà RendererInfo.IsInteractive è quella che potremmo definire una flag: sia che la pagina sia mostrata tramite Server o WebAssembly, ci dirà se è pronta per l'interazione con l'utente. Nell'esempio specifico il bottone verrà mostrato solo quando tutto sarà pronto e caricato correttamente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Eseguire script pre e post esecuzione di un workflow di GitHub
Eseguire query in contemporanea con EF
Scrivere selettori CSS più semplici ed efficienti con :is()
Gestione CSS in Blazor con .NET 9
Gestione file Javascript in Blazor con .NET 9
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Selettore CSS :has() e i suoi casi d'uso avanzati
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento