Quickstarters
Come Costruire un Frontend React e Collevarlo a un Backend?
36 min
in questo tutorial, creerai un'applicazione to do list utilizzando react e la collegherai a un servizio backend questo progetto è un punto di partenza ideale perché coinvolge operazioni crud fondamentali (crea, leggi, aggiorna, elimina) e un'interfaccia utente semplice alla fine, avrai un'app completamente funzionale con un backend connesso, dimostrando come integrare servizi backend gestiti nel tuo flusso di lavoro di sviluppo costruire un'applicazione full stack da zero richiede spesso di impostare un backend, gestire un database, gestire l'autenticazione e distribuire l'infrastruttura questi compiti possono essere complessi e richiedere tempo, specialmente se ti concentri sullo sviluppo frontend e utilizzeremo back4app per questo scopo back4app semplifica questo processo fornendo un backend as a service (baas) scalabile soluzione, permettendoti di concentrarti sulla costruzione della tua applicazione mentre gestisce hosting, database e api back4app offre servizi backend, inclusi un database pronto all'uso, autenticazione, cloud code per la logica lato server e sdk per un'integrazione senza soluzione di continuità supporta anche distribuzioni containerizzate, rendendolo una scelta flessibile per l'hosting di applicazioni full stack con queste funzionalità, puoi costruire e distribuire rapidamente applicazioni senza gestire l'infrastruttura del server punti chiave leggendo questo articolo imparerai a imposta un progetto react moderno utilizzando strumenti standard del settore integra senza soluzione di continuità un servizio backend per gestire i dati dell'applicazione implementa operazioni crud essenziali per un'esperienza utente dinamica distribuisci un'applicazione todo completamente funzionale e vedi come funziona su todo app requisiti per seguire efficacemente questo tutorial, assicurati di avere i seguenti strumenti e competenze node js e npm installati sul tuo computer utilizzerai npm per installare le dipendenze e eseguire la tua applicazione react verifica la tua installazione eseguendo node v e npm v nel tuo terminale conoscenze di base di react , inclusi componenti funzionali, gestione dello stato con hooks e gestione dell'input dell'utente questo tutorial non tratterà i fondamenti di react, quindi è prevista familiarità con jsx e la struttura dei componenti un account back4app per impostare e gestire i tuoi servizi backend registrati su back4app https //www back4app com/ se non hai un account con questi requisiti, sei pronto per impostare il tuo progetto e iniziare a costruire impostazione del progetto per iniziare, devi impostare il tuo ambiente di sviluppo locale e inizializzare il tuo progetto frontend utilizzando vite questo garantisce un'esperienza di sviluppo veloce ed efficiente mantenendo pulita la struttura del tuo progetto prima di tutto, assicurati di avere node js (versione lts) installato se non lo hai, scaricalo da nodejs org https //nodejs org/ e installalo una volta installato, verifica eseguendo node v npm v ora, inizializza il tuo progetto react usando vite , uno strumento di build moderno che offre una velocità superiore rispetto a create react app esegui il seguente comando nel tuo terminale, sostituendo todo app con il nome del progetto che preferisci npm create vite\@latest todo app template react naviga nella cartella del progetto cd todo app installa le dipendenze necessarie npm install avvia il server di sviluppo per verificare la configurazione npm run dev questo avvia la tua app react localmente apri l'url fornito nel tuo browser per confermare che sia in esecuzione con il tuo frontend configurato, il passo successivo è creare un backend su back4app per gestire l'archiviazione dei dati e le interazioni con l'api creazione del backend todo back4app fornisce un servizio backend completamente gestito alimentato da parse , offrendo un database nosql, autenticazione, cloud code e generazione di api pronto all'uso questo ti consente di gestire i dati della tua app senza dover costruire un backend da zero creerai un modello di dati task per memorizzare gli elementi della lista delle cose da fare e collegarlo al tuo frontend react creare un'applicazione backend accedi al tuo dashboard di back4app https //www back4app com/ e clicca su "crea una nuova app " inserisci un nome per la tua applicazione (ad es , todoapp ) e seleziona nodejs/parse come tipo di backend una volta creata, vai su "database" > "browser" , clicca su "crea una classe" , e scegli "personalizzata" nominala task e imposta le autorizzazioni di livello classe per consentire lettura e scrittura pubbliche (puoi affinare questo in seguito) nella classe task aggiungi i seguenti campi titolo (stringa) – titolo del task descrizione (stringa) – dettagli del task completato (booleano) – stato di completamento datascadenza (data) – scadenza del task clicca su "salva" per creare lo schema collegare back4app a react ora, integra back4app nel tuo progetto react utilizzando il parse javascript sdk per comunicare con il backend installalo tramite npm npm install parse successivamente, configura l'sdk inizializzandolo con il tuo application id e javascript key recupera queste credenziali dal back4app dashboard nella sezione app settings > security & keys pagina delle chiavi di back4app con l'id dell'app e la chiave js evidenziati all'interno di src/main jsx , configura parse importando l'sdk minificato e inizializzandolo con il tuo application id e javascript key 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; con il tuo backend connesso, puoi costruire il to do list ui e integrare le operazioni crud sviluppare il frontend ora che il tuo backend è impostato e connesso, è tempo di costruire il to do list ui in react creerai componenti per aggiungere, visualizzare, aggiornare e eliminare attività mentre gestisci lo stato in modo efficiente strutturare i componenti la tua applicazione consisterà in tre componenti chiave taskform jsx – gestisce l'aggiunta di nuove attività tasklist jsx – visualizza tutte le attività e fornisce controlli per contrassegnare le attività come complete o eliminarle taskitem jsx – rappresenta un'attività singola con azioni come contrassegnare come completa o eliminare inizia creando 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 utilizzerai gli usestate e useeffect hooks per gestire i compiti localmente mentre recuperi e aggiorni i dati da back4app prima, definisci lo stato all'interno di app jsx import { usestate, useeffect } from "react"; import parse from "parse/dist/parse min js"; import taskform from " /components/taskform"; import tasklist from " /components/tasklist"; function app() { const \[tasks, settasks] = usestate(\[]); useeffect(() => { fetchtasks(); }, \[]); 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); } }; return ( \<div classname="container"> \<h1>to do list\</h1> \<taskform fetchtasks={fetchtasks} /> \<tasklist tasks={tasks} fetchtasks={fetchtasks} /> \</div> ); } export default app; creare il modulo di attività all'interno di taskform jsx , crea un modulo controllato per aggiungere nuove attività questo memorizzerà i valori di input nello stato e invierà i dati a back4app import { usestate } from "react"; import parse from "parse/dist/parse min js"; function 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 i compiti all'interno di tasklist jsx , rendi la lista dei compiti e includi azioni per contrassegnarli come completati e per eliminarli import taskitem from " /taskitem"; function 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; componente task item all'interno di taskitem jsx , definire azioni per contrassegnare un compito come completato o eliminarlo da back4app import parse from "parse/dist/parse min js"; function 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; stilizzazione dell'applicazione crea un styles css file in src e aggiungi uno stile di base / container to center the content and add some spacing / container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } / make the heading stand out and add spacing below it / container h1 { margin bottom 20px; } / style the form so that inputs and the button are nicely spaced and aligned / form { display flex; flex direction column; align items center; gap 10px; margin bottom 20px; } / make the text inputs fill a reasonable width and add padding / form input\[type="text"] { width 80%; max width 400px; padding 8px; box sizing border box; font size 1rem; } / style the 'add task' button / 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; } / basic text styles for empty task list message / container p { font size 1rem; } / task item container \ centered in both directions (flex + align items/justify content) \ a gap between elements for visual breathing room / 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; / centers text for titles/descriptions / transition background color 0 2s ease; } / completed tasks visually differ strikethrough and grey text / task item completed h3, task item completed p { text decoration line through; color #888; } / task title / task item h3 { margin 0; font size 1 1rem; } / task description / task item p { margin 0; font size 1rem; } / buttons within each task item (centered and with some spacing) / task item button { padding 6px 12px; border none; background color #eaeaea; cursor pointer; font size 0 9rem; } task item button\ hover { background color #ccc; } / on wider screens, you can display elements in a row but keep them centered adjust justify content/align items if you want them spaced differently / @media (min width 600px) { task item { flex direction row; } } importa questo css in main jsx import " /styles css"; l'interfaccia utente dell'applicazione la tua app to do list ora ha un frontend funzionante con un'interfaccia react, integrazione con back4app e styling di base app todo list completata successivamente, distribuirai questo frontend su back4app web deployment distribuzione del frontend su back4app web deployment back4app web deployment fornisce un ambiente completamente gestito e containerizzato per distribuire applicazioni supporta distribuzioni basate su docker , consentendoti di impacchettare il tuo frontend in un container e di eseguirlo sull'infrastruttura di back4app questo garantisce scalabilità, sicurezza e una pipeline ci/cd semplice integrandosi direttamente con github configurare vite per la containerizzazione vite serve le applicazioni in modalità sviluppo per impostazione predefinita per la produzione, è necessario creare una versione statica e servirla utilizzando un server web leggero come nginx prima di tutto, aggiorna vite config js per specificare un percorso di base corretto per il deployment import { defineconfig } from 'vite'; import react from '@vitejs/plugin react'; export default defineconfig({ plugins \[react()], base ' /', // ensures correct asset paths in a containerized environment }); ora, esegui il comando di build per generare file pronti per la produzione npm run build creare un dockerfile per il deployment un dockerfile definisce come la tua app react è containerizzata crea un file chiamato dockerfile nella radice del tuo progetto e aggiungi la seguente configurazione # use an official lightweight node js image from node 18 alpine as build \# set working directory workdir /app \# copy package json and install dependencies copy package json package lock json / run npm install \# copy project files copy \# build the project run npm run build \# use an nginx server for efficient static file serving from nginx\ alpine copy from=build /app/dist /usr/share/nginx/html \# expose port 80 expose 80 \# start nginx cmd \["nginx", " g", "daemon off;"] questo dockerfile fa quanto segue utilizza node js per installare le dipendenze e costruire l'app react copia i file costruiti in un contenitore nginx per un'efficiente distribuzione dei file statici espone la porta 80 per servire l'applicazione costruzione e test del contenitore localmente prima di distribuire, testa il contenitore localmente per assicurarti che funzioni come previsto esegui il seguente comando per costruire l'immagine docker docker build t todo frontend quindi, avvia un contenitore utilizzando docker run p 8080 80 todo frontend apri http //localhost 8080 nel tuo browser per confermare che la tua app react è servita correttamente pubblicare su github e collegarsi a back4app per distribuire su back4app, prima di tutto, pubblica 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 ora, segui questi passaggi per distribuire tramite la piattaforma di distribuzione web di back4app accedi a back4app web deployment https //www back4app com/containers clicca "crea nuova app" , dai un nome al tuo progetto e seleziona github repository autorizza back4app ad accedere al tuo github e seleziona il todo app repository scegli dockerfile deployment e conferma le impostazioni di build clicca "distribuisci" per avviare la prima build gestire e monitorare le distribuzioni una volta distribuito, naviga verso la tua app nel back4app dashboard qui puoi visualizzare i log per risolvere i problemi monitorare i riavvii dei container e l'utilizzo delle risorse ridispiegare su nuovi commit utilizzando il "attiva build" pulsante configurare domini personalizzati se si ospita su un dominio personale dashboard di distribuzione web di back4app applicazione distribuita puoi accedere all'applicazione distribuita utilizzata in questo tutorial su https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ con il tuo front end distribuito con successo, il passo successivo è testare e debuggare per garantire che tutto funzioni senza intoppi test e debug dopo aver distribuito il tuo front end e back end, devi assicurarti che l'applicazione funzioni correttamente questo comporta il test della interazione frontend backend , identificare problemi comuni e debug degli errori in modo efficace test dell'applicazione integrata per verificare che il tuo frontend react interagisca correttamente con il backend di back4app, segui questi passaggi testa la connettività api apri la console degli sviluppatori del tuo browser ( f12 → scheda rete ) e controlla le chiamate api quando aggiungi o recuperi attività se le richieste api falliscono, ispeziona lo stato della risposta e i messaggi di errore aggiungi e recupera attività manualmente usa il ui della lista delle cose da fare per aggiungere un'attività ricarica la pagina per assicurarti che l'attività persista apri il browser del database back4app e conferma che l'attività appare sotto la classe attività controlla le operazioni crud completa ed elimina attività dall'interfaccia utente, quindi verifica le modifiche nel database di back4app se gli aggiornamenti non si riflettono, controlla gli errori nella console del browser o nei log api testa i casi limite prova a inviare attività vuote per assicurarti che la validazione funzioni simula connessioni internet lente ( chrome devtools → rete → lento 3g ) per testare le prestazioni problemi comuni e risoluzione dei problemi errori cors ( access control allow origin problema) vai a back4app dashboard > impostazioni app > sicurezza e chiavi sotto "intestazioni e domini consentiti" , aggiungi l'url del tuo frontend salva e riavvia il backend errori di autenticazione (errori 401 non autorizzato) assicurati che l' id applicazione e chiave javascript siano configurati correttamente nella tua app react se utilizzi l'autenticazione utente, controlla che il token di sessione sia incluso nelle richieste api problemi di distribuzione del backend se l'api non risponde, vai a back4app web deployment > log per controllare gli errori nella distribuzione del tuo backend riavvia il contenitore se necessario con i test e il debug completati, il passo successivo è implementare le migliori pratiche per utilizzare i servizi back4app per ottimizzare le prestazioni e la manutenibilità migliori pratiche per l'utilizzo dei servizi back4app ecco alcune migliori pratiche che puoi seguire quando utilizzi back4app ottimizzare l'interazione frontend backend una comunicazione efficiente tra il tuo frontend e il backend di back4app garantisce un'esperienza utente fluida usa richieste batch quando esegui più operazioni per ridurre il sovraccarico di rete const tasks = \[task1, task2, task3]; parse object saveall(tasks); per le operazioni di lettura, abilita la cache e configura query indicizzate nel dashboard di back4app per accelerare le richieste frequenti richiedi sempre solo i campi necessari per ridurre la dimensione della risposta query select("title", "completed"); ambiente e scalabilità memorizza le chiavi sensibili, come id applicazione e chiave javascript , in variabili d'ambiente invece di codificarle direttamente se utilizzi vite , crea un env file vite parse app id=your app id vite parse js key=your js key in produzione, abilita auto scaling per il deployment web di back4app per gestire l'aumento del traffico monitora l'uso del database e ottimizza le query utilizzando lo strumento di monitoraggio delle prestazioni in back4app sicurezza e prestazioni migliorate limita permessi a livello di classe (clp) affinché solo gli utenti autenticati possano modificare i dati imposta i permessi di lettura/scrittura dinamicamente in base ai ruoli degli utenti task setacl(new parse acl(parse user current())); utilizza cloud code per scaricare logiche aziendali complesse dal frontend, riducendo l'esposizione delle api e migliorando le prestazioni infine, abilita il rate limiting e la validazione delle richieste per prevenire abusi e garantire l'integrità dei dati conclusione hai ora costruito un'applicazione to do list full stack configurando un frontend react, integrandolo con il backend di back4app e distribuendolo tramite flussi di lavoro containerizzati questo processo ha dimostrato un percorso chiaro dallo sviluppo locale al deployment nel cloud, garantendo un'interazione fluida tra frontend e backend guardando avanti, considera miglioramenti come la gestione avanzata degli utenti, aggiornamenti in tempo reale e integrazioni di terze parti per ulteriori approfondimenti, esplora la documentazione di back4app https //www back4app com/docs e le risorse di supporto della comunità