Quickstarters
Come costruire un frontend Solid.js e collegarlo a un backend
34 min
in questa guida, costruirai un'applicazione to do list utilizzando solid js e la collegherai a un robusto backend alimentato da back4app questo tutorial è progettato come un punto di partenza ideale perché copre le operazioni crud fondamentali (crea, leggi, aggiorna, elimina) e ti guida nella progettazione di un'interfaccia utente chiara e funzionale alla fine, avrai un'app completamente operativa che dimostra come integrare un servizio backend gestito mentre sfrutti solid js per un frontend reattivo sviluppare un'applicazione full stack può essere impegnativo a causa delle complessità di configurazione di un backend, gestione di un database, gestione dell'autenticazione e distribuzione dell'infrastruttura per semplificare questo processo, utilizziamo back4app, che offre una soluzione scalabile backend as a service (baas) , permettendoti di concentrarti sulla creazione del tuo frontend mentre gestisce hosting, database e api back4app fornisce servizi backend completi, inclusi un database pronto all'uso, autenticazione, cloud code per la logica lato server e sdk per un'integrazione fluida supporta anche distribuzioni containerizzate, rendendolo una scelta flessibile per l'hosting di applicazioni full stack con questi strumenti, puoi sviluppare e distribuire rapidamente applicazioni senza preoccuparti della manutenzione del server punti chiave seguendo questo tutorial imparerai a inizializzare un progetto moderno solid js utilizzando vite integrare senza soluzione di continuità un servizio backend per gestire i dati della tua applicazione implementare operazioni crud essenziali per un'interfaccia utente dinamica e interattiva distribuire un to do list applicazione completamente funzionale utilizzando flussi di lavoro containerizzati su back4app requisiti preliminari assicurati di avere questi strumenti e competenze prima di iniziare node js e npm installa node js (lts consigliato) da nodejs org https //nodejs org/ e verifica eseguendo node v e npm v nel tuo terminale conoscenza di base di solid js familiarità con i componenti, segnali reattivi (utilizzando createsignal ), e sintassi jsx è richiesta se sei nuovo a solid js, considera di rivedere prima i suoi fondamenti un account back4app registrati su back4app https //www back4app com/ per configurare e gestire i tuoi servizi backend con questi requisiti preliminari in atto, sei pronto per configurare il tuo progetto e iniziare a costruire configurazione del progetto inizia configurando il tuo ambiente di sviluppo locale e inizializzando il tuo progetto solid js utilizzando vite per un'esperienza di sviluppo rapida verifica che node js (versione lts) sia installato sul tuo computer se necessario, scaricalo e installalo da nodejs org https //nodejs org/ conferma l'installazione node v npm v inizializza il tuo progetto solid js utilizzando vite esegui il seguente comando nel tuo terminale (sostituisci todo app con il nome del progetto desiderato) npm create vite\@latest todo app template solid cambia nella directory del tuo progetto cd todo app installa tutte le dipendenze necessarie npm install avvia il server di sviluppo per confermare la tua configurazione npm run dev la tua applicazione solid js dovrebbe ora essere in esecuzione localmente apri l'url visualizzato nel tuo browser per verificarlo successivamente, configurerai il tuo backend su back4app per gestire l'archiviazione dei dati e le interazioni api creazione del backend todo back4app offre un servizio backend completamente gestito alimentato da parse , fornendo un database nosql, autenticazione, cloud code e api auto generate direttamente dal box questa sezione ti guida nella creazione di un task modello di dati per memorizzare gli elementi della tua lista di cose da fare e collegarlo con il tuo frontend solid js impostare la tua applicazione backend accedi al tuo dashboard di back4app https //www back4app com/ e clicca su "crea una nuova app " dai un nome alla tua applicazione (ad esempio, todosolidapp ) e scegli nodejs/parse come tipo di backend una volta creata l'app, vai su "database" > "browser" clicca "crea una classe" e seleziona "personalizzata" dai un nome alla classe task e imposta le autorizzazioni a livello di classe per consentire lettura e scrittura pubbliche (puoi restringere queste impostazioni in seguito) nella classe task aggiungi i seguenti campi titolo (string) – il titolo del compito descrizione (string) – dettagli del compito completato (boolean) – stato che indica se il compito è finito datascadenza (data) – scadenza per il compito clicca "salva" per finalizzare il tuo schema integrazione di back4app con solid js integra back4app nel tuo progetto solid js utilizzando il parse javascript sdk per comunicare con il tuo backend installa l'sdk tramite npm npm install parse configura l'sdk inizializzandolo con il tuo application id e javascript key recupera questi dal tuo back4app dashboard sotto app settings > security & keys nel tuo src/index jsx (o file di ingresso equivalente), importa e configura parse come segue import { render } from "solid js/web"; import ' /index css' import app from " /app"; import parse from "parse/dist/parse min js"; const parse app id = 'your application id'; const parse js key = 'your javascript key'; const parse server url = 'https //parseapi back4app com/'; parse initialize(parse app id, parse js key); parse serverurl = parse server url; render(() => \<app />, document getelementbyid("root")); con il backend configurato, sei pronto per costruire l'interfaccia utente della to do list in solid js e implementare operazioni crud sviluppare il frontend con solid js ora che il tuo backend è connesso, costruisci l'interfaccia utente per la tua applicazione to do list utilizzando solid js creerai componenti per aggiungere, visualizzare, aggiornare e eliminare attività mentre gestisci lo stato con segnali reattivi organizzare i tuoi componenti la tua applicazione consisterà in questi componenti chiave taskform jsx – gestisce l'aggiunta di nuovi compiti tasklist jsx – mostra tutti i compiti e offre controlli per completarli o rimuoverli taskitem jsx – rappresenta un compito individuale con azioni per contrassegnarlo come completato o eliminarlo crea una components cartella all'interno di src e aggiungi questi file mkdir src/components touch src/components/taskform jsx src/components/tasklist jsx src/components/taskitem jsx gestire lo stato con solid js utilizza createsignal e createeffect di solid js per la gestione dello stato e gli effetti collaterali inizia impostando lo stato in app jsx import { createsignal, onmount } from "solid js"; import taskform from " /components/taskform"; import tasklist from " /components/tasklist"; import parse from "parse/dist/parse min js"; function app() { const \[tasks, settasks] = createsignal(\[]); const fetchtasks = async () => { try { const task = parse object extend("task"); const query = new parse query(task); const results = await query find(); settasks(results map(task => ({ id task id, task tojson() }))); } catch (error) { console error("error fetching tasks ", error); } }; onmount(fetchtasks); return ( \<div class="container"> \<h1>to do list\</h1> \<taskform fetchtasks={fetchtasks} /> \<tasklist tasks={tasks()} fetchtasks={fetchtasks} /> \</div> ); } export default app; costruire il componente del modulo attività in taskform jsx , crea un modulo controllato per aggiungere attività gestisci i valori di input con createsignal e invia i dati a back4app import { createsignal } from "solid js"; import parse from "parse/dist/parse min js"; function taskform(props) { const \[title, settitle] = createsignal(""); const \[description, setdescription] = createsignal(""); const handlesubmit = async (e) => { e preventdefault(); try { const task = parse object extend("task"); const task = new task(); task set("title", title()); task set("description", description()); task set("completed", false); await task save(); props fetchtasks(); settitle(""); setdescription(""); } catch (error) { console error("error adding task ", error); } }; return ( \<form onsubmit={handlesubmit}> \<input type="text" placeholder="task title" value={title()} oninput={(e) => settitle(e target value)} required /> \<input type="text" placeholder="description" value={description()} oninput={(e) => setdescription(e target value)} required /> \<button type="submit">add task\</button> \</form> ); } export default taskform; visualizzare l'elenco delle attività in tasklist jsx , rendi l'elenco delle attività utilizzando il componente taskitem per ogni voce import taskitem from " /taskitem"; function tasklist(props) { return ( \<div> {props tasks length === 0 ? ( \<p>no tasks available\</p> ) ( props tasks map(task => ( \<taskitem key={task id} task={task} fetchtasks={props fetchtasks} /> )) )} \</div> ); } export default tasklist; creazione del componente task item in taskitem jsx , imposta le azioni per contrassegnare un'attività come completata o eliminarla import parse from "parse/dist/parse min js"; function taskitem(props) { const handlecomplete = async () => { try { const query = new parse query("task"); const tasktoupdate = await query get(props task id); tasktoupdate set("completed", !props task completed); await tasktoupdate save(); props fetchtasks(); } catch (error) { console error("error updating task ", error); } }; const handledelete = async () => { try { const query = new parse query("task"); const tasktodelete = await query get(props task id); await tasktodelete destroy(); props fetchtasks(); } catch (error) { console error("error deleting task ", error); } }; return ( \<div class={`task item ${props task completed ? "completed" ""}`}> \<h3>{props task title}\</h3> \<p>{props task description}\</p> \<button onclick={handlecomplete}> {props task completed ? "undo" "complete"} \</button> \<button onclick={handledelete}>delete\</button> \</div> ); } export default taskitem; stilizzazione della tua applicazione aggiungi i seguenti stili nel index css file nella cartella src / center the content and add spacing / container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } container h1 { margin bottom 20px; } form { display flex; flex direction column; align items center; gap 10px; margin bottom 20px; } form input\[type="text"] { width 80%; max width 400px; padding 8px; box sizing border box; font size 1rem; } form button { padding 8px 16px; cursor pointer; font size 1rem; border none; background color #eaeaea; transition background color 0 2s ease; } form button\ hover { background color #ccc; } container p { font size 1rem; } task item { display flex; flex direction column; align items center; justify content center; gap 12px; border 1px solid #ccc; border radius 6px; padding 15px; margin 10px 0; background color #fafafa; text align center; transition background color 0 2s ease; } task item completed h3, task item completed p { text decoration line through; color #888; } task item h3 { margin 0; font size 1 1rem; } task item p { margin 0; font size 1rem; } task item button { padding 6px 12px; border none; background color #eaeaea; cursor pointer; font size 0 9rem; } task item button\ hover { background color #ccc; } @media (min width 600px) { task item { flex direction row; } } importa il file css nel tuo src/index jsx import " /index css"; finalizzazione dell'interfaccia utente la tua applicazione to do list in solid js ora presenta un frontend dinamico integrato con back4app e uno stile personalizzato l'app ti consente di aggiungere, visualizzare, aggiornare e eliminare attività mantenendo una comunicazione efficiente tra frontend e backend successivamente, distribuirai la tua app solid js utilizzando la piattaforma di distribuzione web di back4app distribuzione del frontend sulla distribuzione web di back4app la distribuzione web di back4app offre un ambiente completamente gestito e containerizzato per distribuire le tue applicazioni con distribuzioni basate su docker, puoi impacchettare il tuo frontend solid js e distribuirlo senza sforzo configurare vite per la produzione le applicazioni solid js costruite con vite vengono eseguite in modalità sviluppo per impostazione predefinita per la produzione, costruisci una versione statica e servila con un server web leggero come nginx aggiorna il tuo vite config js per impostare il percorso base corretto import { defineconfig } from 'vite'; import solidplugin from 'vite plugin solid'; export default defineconfig({ plugins \[solidplugin()], base ' /', // ensures correct asset paths in containerized environments }); genera file pronti per la produzione npm run build creare un dockerfile per la tua app crea un dockerfile nella radice del progetto per definire come la tua app è containerizzata \# use an official lightweight node js image to build the app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build \# use nginx to serve the static files from nginx\ alpine \# copy custom nginx config for spa routing copy nginx conf /etc/nginx/conf d/default conf \# copy built app from build stage copy from=build /app/dist /usr/share/nginx/html expose 80 cmd \["nginx", " g", "daemon off;"] dopo aver creato il tuo dockerfile, configura nginx per instradare correttamente le richieste al file index html radice della tua applicazione solid js quando provi ad accedere direttamente alle rotte per fare ciò, crea un nginx conf file nella directory principale del tuo progetto e incolla il blocco di codice qui sotto server { listen 80; server name localhost; root /usr/share/nginx/html; index index html; \# gzip settings for better performance gzip on; gzip vary on; gzip min length 10240; gzip proxied expired no cache no store private auth; gzip types text/plain text/css text/xml text/javascript application/x javascript application/xml application/javascript; gzip disable "msie \[1 6]\\ "; \# handle static file requests location \\ (?\ jpg|jpeg|gif|png|ico|svg|woff2|woff|eot|ttf|css|js)$ { expires 30d; add header cache control "public, max age=2592000"; try files $uri =404; } \# redirect all requests to index html for spa routing location / { try files $uri $uri/ /index html; } \# error pages error page 404 /index html; error page 500 502 503 504 /50x html; location = /50x html { root /usr/share/nginx/html; } } testare il container localmente prima del deployment, costruisci e testa il tuo container docker docker build t todo solid frontend esegui il contenitore docker run p 8080 80 todo solid frontend visita http //localhost 8080 nel tuo browser per confermare che la tua app è servita correttamente caricamento su github e distribuzione tramite back4app carica il tuo progetto su github git init git add git commit m "initial commit for back4app deployment" git branch m main git remote add origin \<your github repository url> git push u origin main quindi, distribuisci utilizzando il back4app web deployment accedi a back4app web deployment https //www back4app com/containers clicca su "crea nuova app" , fornisci un nome e seleziona github repository autorizza back4app ad accedere al tuo repository e seleziona il todo solid repo scegli dockerfile deployment e conferma le impostazioni di build clicca su "distribuisci" per avviare il processo di build monitoraggio e gestione delle distribuzioni dopo la distribuzione, utilizza il dashboard di back4app per visualizzare i log per il debug monitorare le prestazioni del container e l'uso delle risorse attivare le ridistribuzioni con nuovi commit configurare domini personalizzati se desiderato testare e debuggare la tua applicazione una volta distribuita, testa a fondo la tua app solid js verifica la connettività api apri la console di sviluppo del browser (f12 → rete) per controllare le chiamate api durante le operazioni di task aggiungi e recupera task usa l'interfaccia utente per aggiungere task, quindi aggiorna e conferma la persistenza dei dati nel database browser di back4app operazioni crud testa la marcatura dei task come completati e la cancellazione, assicurandoti che gli aggiornamenti si riflettano nel backend gestisci i casi limite valida gli input del modulo e simula condizioni di rete più lente utilizzando gli strumenti di sviluppo del browser se si verificano problemi, consulta i log di back4app o rivedi la tua configurazione api migliori pratiche per l'utilizzo dei servizi back4app migliora le prestazioni e la sicurezza della tua applicazione ottimizzare le chiamate api usa richieste batch per più operazioni e seleziona solo i campi necessari nelle query proteggere le variabili d'ambiente memorizza le credenziali sensibili nelle variabili d'ambiente con vite, crea un env file vite parse app id=your app id vite parse js key=your js key implementazione dell'auto scaling abilita l'auto scaling nel deployment web di back4app per scenari di alto traffico miglioramento della sicurezza utilizza le class level permissions (clp) per limitare le modifiche ai dati e imposta gli acl secondo necessità sfruttare il cloud code scarica la logica complessa nel cloud code per migliorare le prestazioni e ridurre l'esposizione dell'api conclusione hai ora costruito un'applicazione to do list full stack utilizzando solid js per il frontend e i robusti servizi backend di back4app questo tutorial ha coperto il percorso dall'inizializzazione di un progetto solid js e integrazione del parse sdk fino al deployment della tua app tramite flussi di lavoro containerizzati su back4app man mano che progredisci, considera di aggiungere funzionalità come l'autenticazione avanzata degli utenti, aggiornamenti in tempo reale e integrazioni di terze parti per migliorare ulteriormente la tua applicazione per ulteriori dettagli e supporto, esplora la documentazione di back4app https //www back4app com/docs