Approfondimenti15/6/2023

Innovazione senza compromessi: come SvelteKit ridefinisce le performance delle applicazioni web

Cosa succede quando un utente apre un e-commerce, un blog o un sito aziendale e la pagina è troppo lenta nel caricare? Il potenziale nuovo cliente va immediatamente via. Ora più che mai, gli utenti si aspettano applicazioni reattive e performanti che offrano loro quello che vogliono nel minor tempo possibile. Proprio per questo parliamo di SvelteKit, un framework di sviluppo web che offre notevoli vantaggi per le aziende che cercano di fornire soluzioni performanti ai propri clienti. 
It's almost impossible to create a slow app” 
- Svelte Origins documentary

Cos’è SvelteKit?

SvelteKit, costruito sulla base del framework Svelte, è stato creato per semplificare e snellire la creazione di applicazioni web ottimizzando le prestazioni. Sebbene per uno sviluppatore la sua struttura ed il suo utilizzo assomiglino a quelli di qualsiasi altro framework di frontend (Angular, Vue, React), è nella fase finale che SvelteKit opera in modo diverso: durante la fase di build, ovvero la fase di “generazione” del codice finale, vengono prodotte pagine statiche che possono essere servite rapidamente dal server, in modo da ridurre il carico sul dispositivo dell'utente, offrendo un'esperienza di navigazione fluida ed accattivante.

Performance e benefici

È supportata anche la generazione ibrida delle pagine, combinando la pre-renderizzazione statica con il rendering dinamico prendendo il meglio di entrambi i mondi: quello che SvelteKit fa per ottimizzare le prestazioni anche in questo scenario è identificare quali punti della pagina possono subire delle modifiche e segnalare al browser di "mettersi in ascolto" solo su quei punti evitando di dover tenere in memoria l'intera pagina alla ricerca di quale elemento subirà una qualsiasi modifica. Questo, unito al fatto che il codice finale generato è JavaScript puro, riconosciuto nativamente dal browser, fa sì che il concetto di shadow-dom con SvelteKit scompaia rimuovendo un ulteriore layer di decodifica per il dispositivo dell'utente. Nella maggior parte degli altri framework di frontend lo shadow-dom è l’anello di congiunzione tra il framework e la pagina web. Quest’ultima riflette le modifiche fatte allo shadow-dom per aggiornare ciò che vede l’utente. Ovviamente questo passaggio ha un costo a livello di performance che cresce man mano che l’applicazione diventa più complessa. 

Di seguito sono riportate delle metriche riguardo i tempi di avvio dell’applicazione web e l’impatto sulla memoria del dispositivo utente. Avendo il codice generato una dimensione molto ridotta ed essendo codice JavaScript, l’avvio di un’applicazione sviluppata con SvelteKit è paragonabile a un’applicazione realizzata senza alcun framework! Come menzionato precedentemente, non dovendo il browser dedicarsi al rilevamento di un qualsiasi cambiamento, l’occupazione di memoria di una web app SvelteKit è nettamente inferiore a quella degli altri framework.

Search Engine Optimization

Da non sottovalutare, la Search-engine-optimization (SEO), resa molto più semplice e veloce grazie alla struttura del framework. I meta tag sono elementi HTML che forniscono informazioni ai motori di ricerca sul contenuto della pagina. Con SvelteKit, è possibile specificare e personalizzare i meta tag per ciascuna pagina dell'applicazione, inclusi il titolo, la descrizione e le parole chiave. Attenzione però. Non si parla solo di meta tag statici! SvelteKit, tramite la direttiva “svelte:head” permette di generare la pagina finale - quella mostrata all’utente e ai motori di ricerca per intenderci - inserendo all’interno dei tag relativi alla SEO qualsiasi tipo di informazione, anche generata dinamicamente. Va da sé che le pagine che non hanno un contenuto statico possono essere ottimizzate per i motori di ricerca alla stregua di pagine statiche. Questa flessibilità permette di ottimizzare i meta tag per migliorare la visibilità e la pertinenza dell'applicazione nei risultati di ricerca con un investimento di sviluppo bassissimo rispetto ad altri framework.

Developer experience

Avere un’esperienza di sviluppo soddisfacente è un altro aspetto su cui si fonda SvelteKit che infatti si distingue per la sua sintassi intuitiva e facile da imparare, che ricorda JavaScript (con supporto a TypeScript) e HTML tradizionali. Questo lo rende accessibile anche a sviluppatori con poca esperienza nei framework più complessi. Inoltre, SvelteKit offre tutta una serie di strumenti e convenzioni che semplificano l'ottimizzazione del codice, animazioni built-in, svariati adapter per il deploy su diversi ambienti e altro ancora. Queste caratteristiche riducono il tempo di apprendimento e migliorano la produttività degli sviluppatori, consentendo alle aziende di sviluppare soluzioni performanti in tempi più rapidi. 


Inoltre, SvelteKit supporta nativamente il routing basato su file-system, che consente agli sviluppatori di gestire facilmente la navigazione all'interno dell’applicazione senza necessità di dover configurare manualmente il routing. Benché questo forzi un determinato modo di organizzare i file all’interno di un progetto, il risultato è comunque quello di avere una struttura facilmente navigabile e che rispecchia al 100% quello che vedrà l’utente finale. Ovviamente è supportato anche il routing basato su parametri - per la generazione di pagine dinamiche - che possono essere configurati facilmente.

Ultimo ma non meno importate, è l'ecosistema in crescita che circonda SvelteKit. La community di sviluppatori di SvelteKit sta crescendo rapidamente, fornendo supporto, risorse e plugin che estendono le funzionalità del framework. Questo significa gli sviluppatori possono beneficiare di una community attiva e di soluzioni "ready-to-go”, riducendo il tempo di sviluppo e migliorando la qualità delle applicazioni. 

Internamente a WebScience abbiamo creato un progetto per dare una spinta iniziale agli sviluppi prendendo SvelteKit e costruendoci sopra una serie di feature di “comune utilizzo” per evitare che gli sviluppatori rifacciano le stesse cose su ogni progetto: Server side rendering di default, supporto multi-lingua, supporto multi-tema, gestione utente (login, registrazione, dettaglio e modifica account, accesso a pagine autenticate), supporto ai WebSocket e altro ancora.

Conclusioni

SvelteKit è un framework di sviluppo web che offre vantaggi significativi alle aziende che cercano di fornire soluzioni performanti ai propri clienti. Grazie alla sua ottimizzazione per le prestazioni, la gestione semplificata della SEO e tutto ciò che il framework mette a disposizione “gratis” piuttosto che farlo fare agli sviluppatori, SvelteKit consente di creare applicazioni web veloci, affidabili e reattive riducendone anche i costi di sviluppo. L'ecosistema in crescita e il supporto della community rendono SvelteKit una scelta solida per lo sviluppo di prodotti competitivi nel mercato del software. 

ARTICOLO A CURA DI

Francesco Ferrante

Software Developer - WebScience

Linkedin