Iniziamo
Come per praticamente tutti i programmi basati su framework, il modo più semplice per iniziare è quello di partire da un progetto base di esempio.
Creiamo il codice di esempio
A questo scopo gli sviluppatori di SvelteKit hanno predisposto un comando dedicato per la creazione della struttura di programma da cui partire:
npm create svelte@latest my-bookshelf
cd my-bookshelf
npm install
npm run dev
Il primo comando crea il vero e proprio progetto di esempio nella cartella my-bookshelf. Nel farlo richiede alcune informazioni di configurazione del progetto, come ad esempio l’utilizzo o meno di Typescript come linguaggio di programmazione.
Noi procediamo scegliendo le seguenti opzioni:
«Skeleton project» come template: vogliamo partire da un progetto vuoto
«No» all’utilizzo di Typescript per il controllo dei tipi
«Yes» per l’utilizzo di ESLint per il controllo del codice
«No» per l’uso di Prettier per la formattazione automatica del codice
«No» all’uso di Playwright per il testing su multi browser
Suggerimento
La attivazione della funzionalità di controllo del codice tramite ESLint, integrato correttamente nell’editor utilizzato obbliga a mantenere una coerenza di scrittura. È anche stato scelto di evitare l’uso del formattatore automatico Prettier obbligando così a scrivere il codice corretto fin dall’inizio.
I comandi successivi installano le dipendenze necessarie per il funzionamento del progetto e lo avviano in modalità di sviluppo.
In particolare l’ultimo comando : npm run dev avvia il server di
sviluppo e rende disponibile l’applicazione web su
localhost:5173.
Analizziamo il progetto
SvelteKit è un progetto attualmente ancora in fase di sviluppo e durante il processo di progettazione ha subito differenti modifiche anche significative.
Nota
Questa guida fa riferimento alla versione disponibile al momento della scrittura (agosto 2022) che raccoglie modifiche sostanziali rispetto alle versioni precedenti. Per maggiori informazioni fare riferimento alla guida ufficiale di conversione : Migration guide #5774.
Ci sono due concetti base da tenere conto:
Ogni pagina dell’applicazione è un componente Svelte
Ogni pagina creata sarà un file aggiunto alla directory
src/routes.
Capiremo più avanti il significato intrinseco di questi concetti.
Analizziamo insieme i file che sono stati generati dai comandi utilizzati precedentemente, evidenziando quelli che sono parte dei sorgenti del progetto e non artefatti della compilazione.
Nella cartella principale di progetto troviamo:
package.json
Il codice generato dovrebbe essere molto simile a quello riportato di seguito, con eventuali differenze sulle versioni delle dipendenze.
{
"name": "my-bookshelf",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint ."
},
"devDependencies": {
"@sveltejs/adapter-auto": "next",
"@sveltejs/kit": "next",
"eslint": "^8.16.0",
"eslint-plugin-svelte3": "^4.0.0",
"svelte": "^3.44.0",
"vite": "^3.1.0"
},
"type": "module"
}
Si tratta del file di dipendenze del progetto Node, e si può notare
che allo stato attuale esistono solo dipendenze di sviluppo (devDependencies)
e nessuna dipendenza di «produzione» (dependencies). Questo è una caratteristica
basiliare di Svelte che, per quanto possibile trasforma tutto il codice
in javascript nativo rendendo il progetto portabile e ottimizzato.
Il file package.json deve includere @sveltejs/kit, svelte e
vite come dipendenze di sviluppo.
Voglio farti notare che il file package.json creato contiene la
configurazione "type": module. Questo fa si che i file .js
sono interpretati come moduli nativi JavaScript in fase di
import e export.
svelte.config.js
File di configurazione di Svelte e SvelteKit
vite.config.js
Un progetto SvelteKit in realtà si tratta di un progetto Vite che usa il plugin @sveltejs/kit/vite assieme a qualsiasi altra configurazione inserita in questo file.
static
In questa cartella sono inseriti gli asset statici che vengono pubblicati
dal server in modo diretto; è qui che metteremo file tipo favicon.png
o robots.txt.
src
È in questa cartella che troviamo tutti i fale che definiscono la nostra applicazione.
src/
├ routes/
│ └ +page.svelte
└ app.html
Per ora il nostro progetto vuooto contiene solo due file:
app.htmlla pagina template - un documento HTML, vedremo in seguito da cosa è composto+page.svelteall’interno della cartellaroutesche rappresenta la pagina iniziale del nostro progetto.