Quickstarters
Wie man ein Nuxt.js-Frontend erstellt und es mit einem Backend verbindet?
36 min
in diesem tutorial werden sie eine to do listen anwendung mit nuxt js erstellen und sie mit einem verwalteten backend dienst von back4app verbinden dieser leitfaden ist für sie geeignet, wenn sie die grundlegenden crud (erstellen, lesen, aktualisieren, löschen) operationen meistern und eine dynamische, responsive benutzeroberfläche mit nuxt js gestalten möchten am ende dieses tutorials wird ihre anwendung nahtlos mit einem backend interagieren, das die datenspeicherung, authentifizierung und mehr verwaltet die entwicklung einer full stack anwendung kann aufgrund der backend konfiguration und der datenbankverwaltung herausfordernd sein um ihren prozess zu optimieren, verwenden wir back4app— einen leistungsstarken backend as a service —was es ihnen ermöglicht, sich auf die entwicklung eines funktionsreichen nuxt js frontends zu konzentrieren back4app bietet eine vollständig verwaltete nosql datenbank, benutzerauthentifizierung, cloud code für benutzerdefinierte logik und sdks für eine mühelose integration dies ermöglicht es ihnen, skalierbare anwendungen zu erstellen und bereitzustellen, ohne sich um die serverinfrastruktur kümmern zu müssen wichtige erkenntnisse indem sie dieses tutorial befolgen, werden sie ein modernes nuxt js projekt mit der nuxt cli initialisieren einen backend dienst integrieren, um die daten ihrer anwendung zu verwalten wesentliche crud operationen für eine dynamische to do liste implementieren ihre voll funktionsfähige anwendung mit containerisierten workflows auf back4app bereitstellen voraussetzungen bevor sie beginnen, stellen sie sicher, dass sie node js und npm auf ihrem computer installiert haben bestätigen sie die installationen mit node v und npm v grundkenntnisse in nuxt js , einschließlich komponenten, seiten und asynchronem datenabruf ein back4app konto zur verwaltung ihrer backend dienste registrieren sie sich bei back4app https //www back4app com/ , falls sie dies noch nicht getan haben mit diesen voraussetzungen sind sie bereit, ihr projekt zu starten projektsetup beginnen sie mit der einrichtung ihrer lokalen entwicklungsumgebung und der initialisierung eines neuen nuxt js projekts stellen sie sicher, dass sie node js (lts version) installiert haben wenn nicht, laden sie es von nodejs org https //nodejs org/ herunter erstellen sie ihr nuxt js projekt mit der nuxt cli npx nuxi init todo app navigiere in dein projektverzeichnis cd todo app installiere die notwendigen abhängigkeiten npm install starte den entwicklungsserver, um die einrichtung zu überprüfen npm run dev öffnen sie die bereitgestellte url in ihrem browser, um ihre nuxt js app in aktion zu sehen mit ihrem frontend bereit, fahren sie fort, um ihr backend auf back4app zu erstellen erstellen des todo backends back4app bietet einen vollständig verwalteten backend service, der von parse , unterstützt wird, der eine nosql datenbank, authentifizierung, cloud code und automatisch generierte apis umfasst befolgen sie diese schritte, um ihr backend einzurichten melden sie sich bei ihrem back4app dashboard https //www back4app com/ an und klicken sie auf "erstellen sie eine neue app " benennen sie ihre app (zum beispiel, todoapp ) und wählen sie nodejs/parse als backend typ navigieren sie zu "datenbank" > "browser" , klicken sie auf "eine klasse erstellen" , und wählen sie "benutzerdefiniert" benennen sie die klasse task und setzen sie die berechtigungen so, dass öffentliches lesen und schreiben erlaubt ist (sie können diese einstellungen später verfeinern) fügen sie in der task klasse die folgenden felder hinzu titel (string) – der titel der aufgabe beschreibung (string) – einzelheiten zur aufgabe abgeschlossen (boolean) – status der aufgabenerledigung fälligkeitsdatum (datum) – der termin für die aufgabe klicken sie auf "speichern" um das schema zu erstellen integration von back4app mit nuxt js sie verwenden das parse javascript sdk um ihre nuxt js app mit dem back4app backend zu verbinden installieren sie das parse sdk npm install parse konfigurieren sie das sdk, indem sie ein spezielles modul erstellen erstellen sie beispielsweise plugins/parse client js mit folgendem inhalt 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; registrieren sie dann dieses plugin in ihrer nuxt config ts (oder nuxt config js ) export default { plugins \[ { src ' /plugins/parse client js', mode 'client' } ] } sie können jetzt parse in ihren seiten oder komponenten importieren, um mit dem backend zu interagieren entwicklung des frontends ihre nuxt js anwendung besteht aus seiten und komponenten, um aufgaben hinzuzufügen, anzuzeigen, zu aktualisieren und zu löschen nutzen sie die dateibasierten routen und das asynchrone datenabrufen von nuxt, um eine dynamische to do liste zu erstellen strukturierung ihrer komponenten erstellen sie einen components ordner in ihrem projekt, um ihre ui komponenten zu organisieren mkdir components sie werden die folgenden komponenten erstellen taskform vue – zum hinzufügen neuer aufgaben tasklist vue – um die liste der aufgaben anzuzeigen taskitem vue – um einzelne aufgaben darzustellen taskform vue diese komponente rendert ein formular, das die details der aufgabe erfasst und sie an back4app übermittelt \<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 diese komponente stellt eine einzelne aufgabe dar und bietet schaltflächen, um ihren abschlussstatus umzuschalten oder die aufgabe zu löschen \<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 diese komponente zeigt die liste der aufgaben an, indem sie über ein array iteriert und jede aufgabe mit der taskitem komponente rendert \<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> seitenintegration in deiner hauptseite (z b pages/index vue ), verwalte den zustand der aufgaben und integriere deine komponenten \<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> styling der anwendung erstelle ein globales stylesheet (z b assets/css/main css ), um grundlegendes styling hinzuzufügen 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; } } füge dieses stylesheet in deine nuxt konfiguration ein, indem du es zum css array in nuxt config ts export default { css \[' /assets/css/main css'] } bereitstellung des frontends auf back4app web deployment back4app web deployment bietet eine containerisierte umgebung, um ihre nuxt js anwendung zu hosten konfiguration von nuxt js für die produktion aktualisieren sie ihre nuxt config ts falls erforderlich, um den basis pfad für die bereitstellung festzulegen export default { router { base ' /' } } generiere den produktionsbuild npm run build npm run generate erstellen einer dockerfile erstelle eine dockerfile im stammverzeichnis deines projekts mit folgendem inhalt # 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;"] testen des docker containers lokal baue dein docker image docker build t todo frontend starte den container docker run p 8080 80 todo frontend öffne http //localhost 8080 in deinem browser, um zu überprüfen, ob deine nuxt js app korrekt bereitgestellt wird bereitstellung auf back4app initialisiere ein git repository, füge deine projektdateien hinzu und committe 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 melde dich bei back4app web bereitstellung https //www back4app com/containers an klicke auf "neue app erstellen" , gib deinen projektnamen ein und wähle dein github repository aus autorisieren sie back4app und wählen sie dockerfile bereitstellung aus bestätige die build einstellungen und klicke auf "bereitstellen" , um die bereitstellung zu starten überwachung deiner bereitstellung nach der bereitstellung verwende das back4app dashboard, um protokolle zur fehlersuche anzuzeigen die leistung und ressourcennutzung des containers zu überwachen neubauten bei neuen commits auszulösen benutzerdefinierte domains zu konfigurieren, falls erforderlich greife auf deine live anwendung zu unter https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ testen und debuggen bestätigen sie nach der bereitstellung, dass ihr nuxt js frontend ordnungsgemäß mit dem back4app backend kommuniziert api überprüfung verwenden sie die entwicklertools ihres browsers (f12 → netzwerk), um api aufrufe zu inspizieren aufgabenoperationen fügen sie aufgaben über die benutzeroberfläche hinzu, schließen sie sie ab und löschen sie sie und überprüfen sie die aktualisierungen im back4app datenbankbrowser fehlerbehandlung überprüfen sie die konsolenprotokolle auf fehler und testen sie randfälle wie leere eingaben leistungstest simulieren sie langsame netzwerkbedingungen mit browser tools, um die reaktionsfähigkeit zu bewerten best practices für die verwendung von back4app mit nuxt js um ihre anwendung zu optimieren effiziente anfragen verwenden sie batch operationen zur verarbeitung mehrerer aufgaben const tasks = \[task1, task2, task3]; parse object saveall(tasks); optimierte abfragen nur die notwendigen felder abrufen query select('title', 'completed'); umgebungsmanagement sensible schlüssel in umgebungsvariablen speichern nuxt public parse app id=your app id nuxt public parse js key=your js key sicherheit verwenden sie acls, um den zugriff einzuschränken task setacl(new parse acl(parse user current())); backend entlastung nutzen sie cloud code für komplexe logik, um die api exposition zu reduzieren fazit sie haben jetzt eine vollständige to do listenanwendung erstellt, indem sie ein nuxt js frontend erstellt, es mit dem backend von back4app integriert und es mit containerisierten workflows bereitgestellt haben dieses tutorial hat sie durch jeden schritt geführt – von der lokalen entwicklung bis zur cloud bereitstellung – und dabei eine nahtlose interaktion zwischen ihrer nuxt js benutzeroberfläche und den backend diensten sichergestellt blicken sie in die zukunft und denken sie an verbesserungen wie echtzeit updates, verbesserte authentifizierung und integrationen von drittanbietern für weiteres lernen besuchen sie die back4app dokumentation https //www back4app com/docs und erkunden sie die community ressourcen