Quickstarters
Come costruire un frontend Nuxt.js e collegarlo a un backend?
36 min
in questo tutorial, costruirai un'applicazione to do list utilizzando nuxt js e la collegherai a un servizio backend gestito alimentato da back4app questa guida è pensata per te se desideri padroneggiare le operazioni crud essenziali (crea, leggi, aggiorna, elimina) e creare un'interfaccia dinamica e reattiva utilizzando nuxt js alla fine di questo tutorial, la tua applicazione interagirà senza problemi con un backend che gestisce l'archiviazione dei dati, l'autenticazione e altro sviluppare un'applicazione full stack può essere impegnativo a causa della configurazione del backend e della gestione del database per semplificare il tuo processo, utilizziamo back4app— un potente backend as a service —che ti consente di concentrarti sullo sviluppo di un frontend nuxt js ricco di funzionalità back4app fornisce un database nosql completamente gestito, autenticazione degli utenti, cloud code per logica personalizzata e sdk per un'integrazione senza sforzo questo ti consente di costruire e distribuire applicazioni scalabili senza gestire l'infrastruttura del server punti chiave seguendo questo tutorial, tu inizializza un progetto nuxt js moderno utilizzando il nuxt cli integra un servizio backend per gestire i dati della tua applicazione implementa operazioni crud essenziali per una to do list dinamica distribuisci la tua applicazione completamente funzionale utilizzando flussi di lavoro containerizzati su back4app requisiti prima di iniziare, assicurati di avere node js e npm installati sul tuo computer conferma le installazioni con node v e npm v conoscenze di base di nuxt js , inclusi componenti, pagine e recupero di dati asincroni un account back4app per gestire i tuoi servizi backend registrati su back4app https //www back4app com/ se non lo hai già fatto con questi requisiti in atto, sei pronto per iniziare a costruire il tuo progetto impostazione del progetto inizia impostando il tuo ambiente di sviluppo locale e inizializzando un nuovo progetto nuxt js assicurati di avere node js (versione lts) installato se non lo hai, scaricalo da nodejs org https //nodejs org/ crea il tuo progetto nuxt js utilizzando il nuxt cli npx nuxi init todo app naviga nella directory del tuo progetto cd todo app installa le dipendenze necessarie npm install avvia il server di sviluppo per verificare la configurazione npm run dev apri l'url fornito nel tuo browser per vedere la tua app nuxt js in azione con il tuo frontend pronto, procedi a creare il tuo backend su back4app creazione del backend todo back4app offre un servizio backend completamente gestito alimentato da parse , che include un database nosql, autenticazione, cloud code e api auto generate segui questi passaggi per impostare il tuo backend accedi al tuo dashboard di back4app https //www back4app com/ e clicca su "crea una nuova app " nomina la tua app (ad esempio, todoapp ) e seleziona nodejs/parse come tipo di backend naviga su "database" > "browser" , clicca su "crea una classe" , e scegli "personalizzata" nomina la classe task e imposta le sue autorizzazioni per consentire lettura e scrittura pubbliche (puoi affinare queste impostazioni in seguito) nella classe task , aggiungi i seguenti campi titolo (stringa) – il titolo del compito descrizione (stringa) – dettagli sul compito completato (booleano) – stato di completamento del compito datascadenza (data) – la scadenza per il compito clicca su "salva" per creare lo schema integrazione di back4app con nuxt js utilizzerai il parse javascript sdk per connettere la tua app nuxt js al backend di back4app installa il parse sdk npm install parse configura il sdk creando un modulo dedicato ad esempio, crea plugins/parse client js con il seguente contenuto 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; poi, registra questo plugin nel tuo nuxt config ts (o nuxt config js ) export default { plugins \[ { src ' /plugins/parse client js', mode 'client' } ] } ora puoi importare parse nelle tue pagine o componenti per interagire con il backend sviluppare il frontend la tua applicazione nuxt js consisterà in pagine e componenti per aggiungere, visualizzare, aggiornare e eliminare attività sfrutta il routing basato su file di nuxt e il recupero di dati asincroni per creare una lista di cose da fare dinamica strutturare i tuoi componenti crea una components cartella nel tuo progetto per organizzare i tuoi componenti ui mkdir components creerai i seguenti componenti taskform vue – per aggiungere nuovi compiti tasklist vue – per visualizzare l'elenco dei compiti taskitem vue – per rappresentare compiti individuali taskform vue questo componente rende un modulo che cattura i dettagli del compito e li invia a back4app \<template> \<form @submit prevent="handlesubmit"> \<input type="text" placeholder="task title" v model="title" required /> \<input type="text" placeholder="description" v model="description" required /> \<button type="submit">add task\</button> \</form> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskform', data() { return { title '', description '' }; }, methods { async handlesubmit() { try { const task = parse object extend('task'); const task = new task(); task set('title', this title); task set('description', this description); task set('completed', false); await task save(); this $emit('refresh'); this title = ''; this description = ''; } catch (error) { console error('error adding task ', error); } } } }; \</script> taskitem vue questo componente rappresenta un'attività individuale e fornisce pulsanti per attivare o disattivare il suo stato di completamento o eliminare l'attività \<template> \<div \ class="\['task item', { completed task completed }]"> \<div> \<h3>{{ task title }}\</h3> \<p>{{ task description }}\</p> \</div> \<div> \<button @click="togglecomplete"> {{ task completed ? 'undo' 'complete' }} \</button> \<button @click="deletetask">delete\</button> \</div> \</div> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskitem', props \['task'], methods { async togglecomplete() { try { const query = new parse query('task'); const tasktoupdate = await query get(this task id); tasktoupdate set('completed', !this task completed); await tasktoupdate save(); this $emit('refresh'); } catch (error) { console error('error updating task ', error); } }, async deletetask() { try { const query = new parse query('task'); const tasktodelete = await query get(this task id); await tasktodelete destroy(); this $emit('refresh'); } catch (error) { console error('error deleting task ', error); } } } }; \</script> tasklist vue questo componente visualizza l'elenco delle attività iterando su un array e renderizzando ogni attività utilizzando il componente taskitem \<template> \<div> \<p v if="tasks length === 0">no tasks available\</p> \<taskitem v for="task in tasks" \ key="task id" \ task="task" @refresh="refreshtasks" /> \</div> \</template> \<script> import taskitem from ' /taskitem vue'; export default { name 'tasklist', props \['tasks'], methods { refreshtasks() { this $emit('refresh'); } }, components { taskitem } }; \</script> integrazione della pagina nella tua pagina principale (ad es , pages/index vue ), gestisci lo stato delle attività e integra i tuoi componenti \<template> \<div class="container"> \<h1>to do list\</h1> \<taskform @refresh="fetchtasks" /> \<tasklist \ tasks="tasks" @refresh="fetchtasks" /> \</div> \</template> \<script> import taskform from ' /components/taskform vue'; import tasklist from ' /components/tasklist vue'; import parse from 'parse/dist/parse min js'; export default { components { taskform, tasklist }, data() { return { tasks \[] }; }, methods { async fetchtasks() { try { const task = parse object extend("task"); const query = new parse query(task); const results = await query find(); this tasks = results map((task) => ({ id task id, task tojson() })); } catch (error) { console error("error fetching tasks ", error); } }, }, mounted() { this fetchtasks(); } }; \</script> stilizzazione dell'applicazione crea un foglio di stile globale (ad es , assets/css/main css ) per aggiungere uno stile di base container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } 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; } 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; } } includi questo foglio di stile nella tua configurazione nuxt aggiungendolo all'array css in nuxt config ts export default { css \[' /assets/css/main css'] } distribuzione del frontend su back4app web deployment back4app web deployment offre un ambiente containerizzato per ospitare la tua applicazione nuxt js configurare nuxt js per la produzione aggiorna il tuo nuxt config ts se necessario per impostare il percorso di base per la distribuzione export default { router { base ' /' } } genera il build di produzione npm run build npm run generate creazione di un dockerfile crea un dockerfile nella radice del tuo progetto con il seguente contenuto # stage 1 build the nuxt js app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build run npm run generate \# stage 2 serve the app using nginx from nginx\ alpine copy from=build /app/dist /usr/share/nginx/html expose 80 cmd \["nginx", " g", "daemon off;"] testare il contenitore docker localmente costruisci la tua immagine docker docker build t todo frontend esegui il contenitore docker run p 8080 80 todo frontend apri http //localhost 8080 nel tuo browser per verificare che la tua app nuxt js sia servita correttamente distribuzione su back4app inizializza un repository git, aggiungi i file del tuo progetto e fai il commit 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 accedi a back4app web deployment https //www back4app com/containers clicca su "crea nuova app" , fornisci il nome del tuo progetto e seleziona il tuo repository github autorizza back4app e scegli dockerfile deployment conferma le impostazioni di build e clicca su "deploy" per avviare il deployment monitorare il tuo deployment dopo il deployment, utilizza il dashboard di back4app per visualizzare i log per il debug monitorare le prestazioni del container e l'uso delle risorse attivare ricostruzioni su nuovi commit configurare domini personalizzati se necessario accedi alla tua applicazione live su https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ test e debugging dopo il deployment, conferma che il tuo frontend nuxt js comunichi correttamente con il backend di back4app verifica api usa gli strumenti per sviluppatori del tuo browser (f12 → rete) per ispezionare le chiamate api operazioni sui compiti aggiungi, completa ed elimina compiti tramite l'interfaccia utente e verifica gli aggiornamenti nel browser del database di back4app gestione degli errori controlla i log della console per errori e testa casi limite come invii vuoti test delle prestazioni simula condizioni di rete lente utilizzando gli strumenti del browser per valutare la reattività migliori pratiche per utilizzare back4app con nuxt js per ottimizzare la tua applicazione richieste efficienti usa operazioni batch per gestire più compiti const tasks = \[task1, task2, task3]; parse object saveall(tasks); query ottimizzate recupera solo i campi necessari query select('title', 'completed'); gestione dell'ambiente memorizza le chiavi sensibili nelle variabili d'ambiente nuxt public parse app id=your app id nuxt public parse js key=your js key sicurezza usa le acl per limitare l'accesso task setacl(new parse acl(parse user current())); offloading del backend sfrutta il cloud code per logiche complesse per ridurre l'esposizione delle api conclusione hai ora costruito un'applicazione to do list full stack creando un frontend nuxt js, integrandolo con il backend di back4app e distribuendolo utilizzando flussi di lavoro containerizzati questo tutorial ti ha guidato attraverso ogni passaggio—dallo sviluppo locale alla distribuzione nel cloud—garantendo un'interazione senza soluzione di continuità tra la tua interfaccia nuxt js e i servizi backend guardando al futuro, considera miglioramenti come aggiornamenti in tempo reale, autenticazione migliorata e integrazioni di terze parti per ulteriori informazioni, visita la documentazione di back4app https //www back4app com/docs ed esplora le risorse della comunità