Quickstarters
Come costruire un frontend Gatsby e collegarlo a un backend?
32 min
in questo tutorial, costruirai un'applicazione to do list utilizzando gatsby e la collegherai a un robusto backend fornito da back4app questa guida è ideale per coloro che cercano di integrare operazioni crud essenziali (crea, leggi, aggiorna, elimina) in un sito statico veloce alla fine, avrai un'app completamente funzionale che dimostra come sfruttare i servizi backend di back4app mentre utilizzi gatsby per un frontend super veloce costruire un'applicazione full stack può essere impegnativo, con complessità come la configurazione del backend, la gestione del database, l'autenticazione e il deployment per semplificare questo processo, utilizziamo back4app—una soluzione backend as a service (baas) scalabile —così puoi concentrarti sulla costruzione del tuo sito gatsby mentre gestisce hosting, database e api back4app offre una suite completa di servizi backend, inclusi un database pronto all'uso, autenticazione, cloud code per la logica lato server e integrazioni sdk senza soluzione di continuità il suo supporto per i deployment containerizzati lo rende un'ottima opzione per le moderne applicazioni full stack con questi strumenti, puoi sviluppare e distribuire rapidamente applicazioni senza gestire l'infrastruttura del server punti chiave seguendo questo tutorial imparerai a inizializzare un progetto moderno di gatsby integrare un servizio backend per gestire i dati della tua applicazione implementare operazioni crud fondamentali per un'esperienza utente interattiva distribuire un applicazione to do list completamente funzionale utilizzando flussi di lavoro containerizzati su back4app requisiti assicurati di avere quanto segue prima di iniziare node js e npm installa l'ultima versione lts di node js da nodejs org https //nodejs org/ e verifica eseguendo node v e npm v nel tuo terminale conoscenze di base di gatsby è prevista familiarità con react, graphql e il layer dati di gatsby se sei nuovo a gatsby, 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 in atto, sei pronto per configurare il tuo progetto e iniziare a costruire impostazione del progetto inizia configurando il tuo ambiente di sviluppo locale e inizializzando il tuo progetto gatsby verifica che node js (versione lts) sia installato se necessario, scaricalo da nodejs org https //nodejs org/ controlla la tua installazione node v npm v crea un nuovo progetto gatsby utilizzando il gatsby cli esegui il seguente comando (sostituisci todo app con il nome del tuo progetto desiderato) npx gatsby new todo app cambia nella directory del tuo progetto cd todo app avvia il server di sviluppo per verificare l'impostazione npx gatsby develop il tuo sito gatsby dovrebbe ora essere in esecuzione localmente apri l'url fornito nel tuo browser per confermare successivamente, configurerai il tuo backend su back4app per gestire l'archiviazione dei dati e le interazioni api creazione del backend todo back4app fornisce un servizio backend completamente gestito alimentato da parse , offrendo un database nosql, autenticazione, cloud code e api auto generate pronte all'uso questa sezione ti guiderà nella creazione di un task modello di dati per memorizzare i tuoi elementi da fare e collegarlo al tuo frontend gatsby impostare la tua applicazione backend accedi al tuo dashboard di back4app https //www back4app com/ e clicca "crea una nuova app " dai un nome alla tua applicazione (ad esempio, todogatsbyapp ) e seleziona nodejs/parse come tipo di backend una volta creata l'app, vai a "database" > "browser" clicca "crea una classe" e scegli "personalizzata" dai un nome alla classe task e imposta le autorizzazioni di livello classe per consentire lettura e scrittura pubbliche (puoi affinare queste impostazioni in seguito) nella classe task aggiungi i seguenti campi titolo (string) – il titolo del compito descrizione (string) – dettagli sul compito completato (boolean) – indica se il compito è completato datascadenza (data) – la scadenza per il compito clicca "salva" per finalizzare il tuo schema integrazione di back4app con gatsby integra back4app nel tuo progetto gatsby utilizzando il parse javascript sdk installa l'sdk tramite npm npm install parse configura l'sdk inizializzandolo con il tuo application id e javascript key recupera queste credenziali dal tuo back4app dashboard sotto app settings > security & keys nel tuo progetto, crea un file (ad esempio, src/utils/parse config js ) e aggiungi la seguente configurazione // src/utils/parse config js 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; export default parse; ora puoi importare questa configurazione nelle tue pagine e componenti gatsby per interagire con il tuo backend sviluppare il frontend con gatsby ora che il tuo backend è connesso, costruisci l'interfaccia utente per la tua applicazione to do list utilizzando gatsby creerai pagine e componenti per aggiungere, visualizzare, aggiornare e eliminare attività sfruttando react e graphql organizzare i tuoi componenti la tua applicazione includerà i seguenti componenti chiave taskform js – gestisce l'aggiunta di nuovi compiti tasklist js – mostra tutti i compiti e fornisce controlli per contrassegnare i compiti come completati o eliminarli taskitem js – rappresenta un compito individuale con azioni per attivare il completamento o rimuoverlo crea una components cartella all'interno di src e aggiungi questi file mkdir src/components touch src/components/taskform js src/components/tasklist js src/components/taskitem js gestire lo stato con react hooks usa i react hooks ( usestate e useeffect ) per la gestione dello stato e gli effetti collaterali nella tua pagina principale (ad esempio, src/pages/index js ), imposta lo stato come segue // src/pages/index js import react, { usestate, useeffect } from "react"; import parse from " /utils/parse config"; import taskform from " /components/taskform"; import tasklist from " /components/tasklist"; const indexpage = () => { const \[tasks, settasks] = usestate(\[]); 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); } }; useeffect(() => { fetchtasks(); }, \[]); return ( \<div classname="container"> \<h1>to do list\</h1> \<taskform fetchtasks={fetchtasks} /> \<tasklist tasks={tasks} fetchtasks={fetchtasks} /> \</div> ); }; export default indexpage; costruire il componente del modulo attività in taskform js , crea un modulo controllato per aggiungere attività gestisci i valori di input utilizzando usestate e invia i dati a back4app // src/components/taskform js import react, { usestate } from "react"; import parse from " /utils/parse config"; const taskform = ({ fetchtasks }) => { const \[title, settitle] = usestate(""); const \[description, setdescription] = usestate(""); 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(); fetchtasks(); settitle(""); setdescription(""); } catch (error) { console error("error adding task ", error); } }; return ( \<form onsubmit={handlesubmit}> \<input type="text" placeholder="task title" value={title} onchange={(e) => settitle(e target value)} required /> \<input type="text" placeholder="description" value={description} onchange={(e) => setdescription(e target value)} required /> \<button type="submit">add task\</button> \</form> ); }; export default taskform; visualizzare l'elenco delle attività in tasklist js , rendi l'elenco delle attività mappando l'array delle attività e utilizzando il taskitem componente // src/components/tasklist js import react from "react"; import taskitem from " /taskitem"; const tasklist = ({ tasks, fetchtasks }) => { return ( \<div> {tasks length === 0 ? ( \<p>no tasks available\</p> ) ( tasks map(task => ( \<taskitem key={task id} task={task} fetchtasks={fetchtasks} /> )) )} \</div> ); }; export default tasklist; creazione del componente task item in taskitem js , crea un componente che ti consenta di contrassegnare un compito come completato o di eliminarlo // src/components/taskitem js import react from "react"; import parse from " /utils/parse config"; const taskitem = ({ task, fetchtasks }) => { const handlecomplete = async () => { try { const query = new parse query("task"); const tasktoupdate = await query get(task id); tasktoupdate set("completed", !task completed); await tasktoupdate save(); fetchtasks(); } catch (error) { console error("error updating task ", error); } }; const handledelete = async () => { try { const query = new parse query("task"); const tasktodelete = await query get(task id); await tasktodelete destroy(); fetchtasks(); } catch (error) { console error("error deleting task ", error); } }; return ( \<div classname={`task item ${task completed ? "completed" ""}`}> \<h3>{task title}\</h3> \<p>{task description}\</p> \<button onclick={handlecomplete}> {task completed ? "undo" "complete"} \</button> \<button onclick={handledelete}>delete\</button> \</div> ); }; export default taskitem; stilizzare la tua applicazione crea un styles css file nella src cartella con uno stile di base / src/styles css / 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 questo css nel tuo layout o pagina gatsby (ad esempio, in gatsby browser js ) // gatsby browser js import " /src/styles css"; finalizzazione dell'interfaccia utente la tua applicazione to do list di gatsby ora presenta un frontend dinamico integrato con back4app e uno stile personalizzato l'app ti consente di aggiungere, visualizzare, aggiornare e eliminare attività garantendo una comunicazione efficiente tra frontend e backend successivamente, distribuirai il tuo sito gatsby utilizzando la piattaforma di distribuzione web di back4app distribuzione del frontend sulla piattaforma di distribuzione web di back4app back4app web deployment offre un ambiente completamente gestito e containerizzato per ospitare le tue applicazioni con distribuzioni basate su docker, puoi impacchettare il tuo sito gatsby e distribuirlo senza sforzo configurare gatsby per la produzione gatsby genera un sito statico per impostazione predefinita costruisci il tuo sito pronto per la produzione con npx gatsby build creare un dockerfile per il tuo sito prima di creare un dockerfile , crea prima un dockerignore file nella directory principale del tuo progetto e aggiungi queste righe di codice git node modules eslint prettier git vscode readme md dockerfile docker compose yml public cache successivamente, crea un docker compose yml file da utilizzare con i comandi docker compose l'obiettivo del file dovrebbe essere la fase di distribuzione nel tuo dockerfile il tuo docker compose yml file dovrebbe contenere i comandi qui sotto version '3' services app image todo app gatsby build context dockerfile dockerfile target deploy ports \ "8000 80" ora, crea un dockerfile nella radice del progetto per containerizzare il tuo sito gatsby from node 20 as build workdir /usr/src/app copy run npm install run npm run build from nginx 1 18 alpine as deploy workdir /usr/share/nginx/html run rm rf / copy from=build /usr/src/app/public entrypoint \[ "nginx", " g", "daemon off;" ] testare il container localmente prima della distribuzione, costruisci e testa il tuo container docker docker build t todo gatsby frontend esegui il contenitore docker run p 8000 80 todo gatsby frontend visita http //localhost 8000 nel tuo browser per verificare che il tuo sito sia servito 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 gatsby 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 la risoluzione dei problemi monitorare le prestazioni del container e l'uso delle risorse attivare le ridistribuzioni su nuovi commit configurare domini personalizzati se necessario testare e debuggare la tua applicazione una volta distribuito, testa a fondo il tuo sito gatsby verifica la connettività api apri la console di sviluppo del tuo browser (f12 → rete) per controllare le chiamate api durante le operazioni aggiungi e recupera attività usa l'interfaccia utente per aggiungere attività, quindi aggiorna per confermare la persistenza dei dati nel browser del database back4app testa le operazioni crud assicurati che la marcatura delle attività come completate e la cancellazione si riflettano correttamente nel backend gestisci i casi limite valida gli input del modulo e simula condizioni di rete lente utilizzando gli strumenti di sviluppo se si verificano problemi, controlla i log di back4app o verifica 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 interroga solo i campi necessari proteggere i dati sensibili memorizza le credenziali come l'id dell'applicazione e la chiave javascript in variabili di ambiente con gatsby, crea un env file gatsby parse app id=your app id gatsby parse js key=your js key abilitare l'auto scaling attiva l'auto scaling nel deployment web di back4app per gestire il traffico elevato migliorare la sicurezza limita i permessi a livello di classe (clp) per controllare le modifiche ai dati e imposta acl come necessario utilizzare il cloud code scarica la logica complessa nel cloud code per migliori prestazioni e ridotto esposizione api conclusione hai ora costruito un'applicazione to do list full stack utilizzando gatsby per il frontend e i robusti servizi backend di back4app questo tutorial ti ha guidato attraverso la configurazione di un progetto gatsby, l'integrazione del parse sdk e il deployment del tuo sito utilizzando flussi di lavoro containerizzati su back4app man mano che continui a sviluppare, considera di aggiungere funzionalità come l'autenticazione avanzata degli utenti, aggiornamenti in tempo reale e integrazioni di terze parti per ulteriori informazioni e supporto, fai riferimento alla documentazione di back4app https //www back4app com/docs