Quickstarters
How to Build a Redwood.js Frontend and Connect It to a Backend?
22 min
in questo tutorial, costruirai un'applicazione to do list utilizzando redwood js e la collegherai a un backend gestito su back4app questa guida pratica ti guiderà attraverso ogni passaggio—dalla configurazione del tuo progetto redwood js all'integrazione di parse per la comunicazione con il backend—così potrai concentrarti sulla creazione di un'interfaccia utente dinamica e reattiva redwood js è progettato per semplificare lo sviluppo full stack combinando un frontend moderno basato su react con un'architettura backend robusta in questo tutorial, utilizzerai back4app per gestire i tuoi servizi backend, permettendoti di eseguire operazioni crud essenziali senza il fastidio di gestire l'infrastruttura del server punti chiave alla fine di questa guida, sarai in grado di inizializzare un progetto moderno redwood js con strumenti standard del settore collegare il tuo frontend redwood js a un backend back4app utilizzando il parse javascript sdk implementare operazioni crud per gestire il tuo to do list containerizzare la tua app redwood js e distribuirla tramite il deployment web di back4app prerequisiti prima di iniziare, assicurati di avere quanto segue node js e npm/yarn installati sul tuo computer verifica l'installazione con node v e npm v o yarn v conoscenze di base su redwood js , inclusa la struttura del progetto, il routing e i componenti la familiarità con i concetti di react è utile un account back4app per configurare e gestire i tuoi servizi backend registrati su back4app https //www back4app com/ se necessario con questi prerequisiti in atto, sei pronto per configurare il tuo progetto redwood js e collegarlo a un backend scalabile impostazione del progetto inizia creando una nuova applicazione redwood js apri il tuo terminale ed esegui il seguente comando, sostituendo todo app con il nome del progetto desiderato yarn create redwood app todo app naviga nella directory del tuo progetto cd todo app installa tutte le dipendenze yarn install esegui il server di sviluppo per verificare che il tuo progetto sia impostato correttamente yarn rw dev visita l'url visualizzato nel tuo terminale per confermare che la tua app redwood js è in esecuzione impostare il backend todo su back4app back4app fornisce un backend parse gestito che semplifica la gestione dei dati per la tua applicazione in questa sezione, creerai un modello di dati per memorizzare i compiti della tua lista to do creare 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, todoredwoodapp ) e scegli nodejs/parse come tipo di backend nella sezione "database" > "browser" clicca su "crea una classe" e seleziona "personalizzata " nomina la classe task e imposta le sue autorizzazioni di livello classe per consentire lettura e scrittura pubbliche (regola queste impostazioni in seguito se necessario) aggiungi i seguenti campi alla classe task titolo (string) – il titolo del compito descrizione (string) – dettagli sul compito completato (boolean) – se il compito è completato datascadenza (data) – la scadenza per il compito clicca su "salva" per finalizzare lo schema integrazione di back4app con redwood js per connettere la tua app redwood js a back4app, installa il parse javascript sdk yarn add parse successivamente, configura parse creando un nuovo file nella web/src directory chiamalo parseclient js e aggiungi il seguente codice sostituisci 'your application id' e 'your javascript key' con le tue credenziali dal dashboard di back4app (sotto impostazioni app > sicurezza e chiavi ) // web/src/parseclient 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 questa configurazione ti consente di chiamare i metodi parse da qualsiasi componente redwood js costruire il frontend con redwood js con il tuo backend connesso, è tempo di costruire l'interfaccia della to do list in redwood js, le pagine sono collocate sotto la web/src/pages directory creare la pagina todo crea una nuova cartella chiamata todopage in web/src/pages e aggiungi un file chiamato todopage jsx mkdir p web/src/pages/todopage touch web/src/pages/todopage/todopage jsx apri web/src/pages/todopage/todopage jsx e aggiungi il seguente codice // web/src/pages/todopage/todopage jsx import { usestate, useeffect } from 'react' import parse from 'src/parseclient' const todopage = () => { const \[tasks, settasks] = usestate(\[]) const \[title, settitle] = usestate('') const \[description, setdescription] = 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) } } const addtask = 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() settitle('') setdescription('') fetchtasks() } catch (error) { console error('error adding task ', error) } } const toggletask = async (id, currentstatus) => { try { const task = parse object extend('task') const query = new parse query(task) const task = await query get(id) task set('completed', !currentstatus) await task save() fetchtasks() } catch (error) { console error('error toggling task ', error) } } const deletetask = async (id) => { try { const task = parse object extend('task') const query = new parse query(task) const task = await query get(id) await task destroy() fetchtasks() } catch (error) { console error('error deleting task ', error) } } return ( \<div classname="container"> \<h1>to do list\</h1> \<form onsubmit={addtask} classname="form"> \<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> \<div classname="tasks"> {tasks length === 0 ? ( \<p>no tasks available\</p> ) ( tasks map((task) => ( \<div key={task id} classname={`task item ${task completed ? 'completed' ''}`} \> \<h3>{task title}\</h3> \<p>{task description}\</p> \<button onclick={() => toggletask(task id, task completed)}> {task completed ? 'undo' 'complete'} \</button> \<button onclick={() => deletetask(task id)}>delete\</button> \</div> )) )} \</div> \</div> ) } export default todopage configurazione delle rotte per rendere la tua pagina todo accessibile, apri il routes jsx file situato in web/src/routes jsx e aggiungi una nuova rotta // web/src/routes jsx import todopage from 'src/pages/todopage/todopage' const routes = () => { return ( \<router> \<route path="/" page={todopage} name="todo" /> \<route notfound page={notfoundpage} /> \</router> ); }; export default routes; aggiunta di stili globali per aggiungere stili globali, aggiungi gli stili css qui sotto al file css chiamato index css nella cartella web/src / web/src/index 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; 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; } tasks p { font size 1rem; } task item { display flex; flex direction column; align items 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; } } la tua app redwood js ora presenta un'interfaccia funzionale per la lista delle cose da fare che interagisce con un backend back4app containerizzazione e distribuzione della tua app redwood js su back4app la distribuzione web di back4app offre un ambiente containerizzato che semplifica la distribuzione delle app in questa sezione, impacchetterai la tua app redwood js in un container docker e la distribuirai preparare la tua app per la produzione per prima cosa, costruisci la tua app redwood js per la produzione yarn rw build web creazione di un dockerfile per configurare docker per il tuo progetto redwood js, devi eseguire il comando di configurazione docker nel tuo terminale yarn rw setup docker i comandi di configurazione eseguono diverse operazioni crea quattro file dockerfile, dockerignore, docker compose dev yml e docker compose prod yml aggiunge il pacchetto @redwoodjs/api server al lato api e il pacchetto @redwoodjs/web server al lato web aggiorna l'impostazione browser open in redwood toml se questa impostazione rimane vera, causerà un'interruzione del server di sviluppo durante l'esecuzione di docker compose dev yml il comando fornisce un dockerfile che costruisce la tua applicazione redwood js e prepara un'immagine di produzione utilizzando un runtime node js minimale puoi avviare il file di composizione dev con docker compose f /docker compose dev yml up apri http //localhost 8390 nel tuo browser per verificare che la tua app redwood js funzioni correttamente distribuzione tramite back4app web deployment 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, accedi a back4app web deployment https //www back4app com/containers e segui questi passaggi clicca "crea nuova app" e inserisci i dettagli del tuo progetto seleziona repository github e autorizza back4app scegli il tuo todo redwood repository seleziona distribuzione dockerfile e verifica le impostazioni di build clicca "distribuisci" per avviare il processo di distribuzione dopo la distribuzione, utilizza il dashboard di back4app per monitorare i log, gestire le build e configurare domini personalizzati se necessario testare e debuggare la tua applicazione una volta distribuita, assicurati che la tua app funzioni come previsto connettività api usa gli strumenti per sviluppatori del browser per verificare che le richieste api per aggiungere, attivare e eliminare attività siano riuscite persistenza dei dati aggiungi attività tramite l'interfaccia utente e aggiorna per confermare che le attività persistano nel database back4app operazioni crud testa l'attivazione e l'eliminazione delle attività controllando eventuali errori nella console o nei log api casi limite verifica che le convalide di input impediscano invii vuoti migliori pratiche e suggerimenti per l'ottimizzazione per un'applicazione sicura ed efficiente, considera quanto segue ottimizza le richieste api usa l'elaborazione in batch e recupera solo i campi necessari variabili di ambiente proteggi le credenziali sensibili (id applicazione e chiave javascript) utilizzando variabili di ambiente controllo accessi implementa acl dinamici in modo che solo gli utenti autorizzati possano modificare i dati codice cloud scarica la logica complessa nel codice cloud di back4app per migliorare le prestazioni e la sicurezza conclusione hai ora costruito un'applicazione to do list full stack utilizzando redwood js integrato con un backend back4app questo tutorial ha coperto tutto, dall'inizializzazione del progetto e integrazione del backend fino al deployment containerizzato man mano che continui a sviluppare, considera di aggiungere funzionalità come gestione avanzata degli utenti, aggiornamenti in tempo reale e integrazioni di terze parti per ulteriori informazioni, esplora la documentazione back4app https //www back4app com/docs e le risorse di redwood js