Quickstarters
Wie man ein Astro-Frontend erstellt und es mit einem Backend verbindet?
34 min
in diesem tutorial werden sie eine to do listen anwendung mit astro erstellen und sie mit einem verwalteten backend service von back4app verbinden dieser leitfaden ist für sie gedacht, wenn sie die grundlegenden crud (create, read, update, delete) operationen meistern möchten, während sie ein modernes, statisches frontend mit dynamischen daten mit astro erstellen 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 robusten backend as a service —damit sie sich auf die erstellung eines schnellen und leichten astro frontends konzentrieren können back4app bietet eine vollständig verwaltete nosql datenbank, benutzerauthentifizierung, cloud code für benutzerdefinierte logik und sdks für nahtlose integration dies ermöglicht es ihnen, skalierbare anwendungen zu erstellen und bereitzustellen, ohne die serverinfrastruktur verwalten zu müssen wichtige erkenntnisse durch das befolgen dieses tutorials werden sie ein modernes astro projekt mit vite initialisieren einen backend service 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 überprüfen sie die installationen mit node v und npm v grundkenntnisse in astro , einschließlich dateibasiertem routing und komponentenentwicklung ein back4app konto zur verwaltung ihrer backend services melden sie sich bei back4app https //www back4app com/ an, 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 astro 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 astro projekt, indem sie folgendes ausführen npm create astro\@latest todo app navigieren sie in ihr projektverzeichnis cd todo app starten sie den entwicklungsserver, um die einrichtung zu überprüfen npm run dev ihre astro app sollte jetzt in ihrem browser geöffnet werden 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 an bei ihrem back4app dashboard https //www back4app com/ 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 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 abgabetermin für die aufgabe klicken sie auf "speichern" um das schema zu erstellen integration von back4app mit astro sie verwenden das parse javascript sdk um ihre astro 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 eine datei unter src/lib/parseclient 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; sie können dieses modul jetzt in ihren astro komponenten oder seiten importieren, um mit dem backend zu interagieren entwicklung des frontends ihre astro anwendung besteht aus komponenten und seiten, um aufgaben hinzuzufügen, anzuzeigen, zu aktualisieren und zu löschen verwenden sie astros dateibasiertes routing und komponenten, um eine dynamische to do liste zu erstellen strukturierung ihrer komponenten um ihr frontend zu erstellen, verwenden sie solid js um solid js in astro zu verwenden, installieren sie das solid js paket so npm install solid js erstellen sie einen src/components ordner, um ihre ui komponenten zu organisieren mkdir src/components sie werden die folgenden komponenten erstellen taskformsolid jsx – zum hinzufügen neuer aufgaben taskitemsolid jsx – um einzelne aufgaben darzustellen tasklistsolid jsx – um die liste der aufgaben anzuzeigen todoapp jsx – um die gesamte anwendung anzuzeigen taskformsolid jsx diese komponente rendert ein formular, das die aufgabendetails erfasst und sie an back4app sendet // taskformsolid jsx import { createsignal } from 'solid js'; import parse from ' /lib/parseclient'; export default function taskformsolid(props) { const \[title, settitle] = createsignal(''); const \[description, setdescription] = createsignal(''); 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(); if (props refreshtasks) { props refreshtasks(); } settitle(''); setdescription(''); } catch (error) { console error('error adding task ', error); } }; return ( \<form onsubmit={handlesubmit}> \<input type="text" placeholder="task title" value={title()} oninput={(e) => settitle(e target value)} required /> \<input type="text" placeholder="description" value={description()} oninput={(e) => setdescription(e target value)} required /> \<button type="submit">add task\</button> \</form> ); } taskitemsolid jsx diese komponente stellt eine einzelne aufgabe dar und bietet schaltflächen, um den abschlussstatus umzuschalten oder die aufgabe zu löschen // taskitemsolid jsx import { createsignal } from 'solid js'; import parse from ' /lib/parseclient'; export default function taskitemsolid(props) { const \[iscompleted, setiscompleted] = createsignal(props task completed); const togglecomplete = async () => { try { const query = new parse query('task'); const tasktoupdate = await query get(props task id); const newcompletedstate = !iscompleted(); tasktoupdate set('completed', newcompletedstate); await tasktoupdate save(); setiscompleted(newcompletedstate); if (props refreshtasks) { props refreshtasks(); } } catch (error) { console error('error updating task ', error); } }; const deletetask = async () => { try { const query = new parse query('task'); const tasktodelete = await query get(props task id); await tasktodelete destroy(); if (props refreshtasks) { props refreshtasks(); } } catch (error) { console error('error deleting task ', error); } }; return ( \<div class={`task item ${iscompleted() ? 'completed' ''}`}> \<div> \<h3>{props task title}\</h3> \<p>{props task description}\</p> \</div> \<div> \<button onclick={togglecomplete}> {iscompleted() ? 'undo' 'complete'} \</button> \<button onclick={deletetask}>delete\</button> \</div> \</div> ); } tasklistsolid jsx diese komponente zeigt eine liste von aufgaben an, indem sie über ein array iteriert und jedes taskitem rendert // tasklistsolid jsx import { for, show } from 'solid js'; import taskitemsolid from ' /taskitemsolid'; export default function tasklistsolid(props) { return ( \<div class="task list"> \<show when={props tasks length > 0} fallback={\<p>no tasks available\</p>}> \<for each={props tasks}> {(task) => ( \<taskitemsolid task={task} refreshtasks={props refreshtasks} /> )} \</for> \</show> \</div> ); } todoapp jsx diese komponente importiert und zeigt die anderen komponenten an sie zeigt die gesamte anwendung an // todoapp jsx import { createsignal, onmount, createeffect } from 'solid js'; import parse from ' /lib/parseclient'; import taskformsolid from ' /taskformsolid'; import tasklistsolid from ' /tasklistsolid'; export default function todoapp() { const \[tasks, settasks] = createsignal(\[]); 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); } }; onmount(() => { fetchtasks(); }); return ( <> \<taskformsolid refreshtasks={fetchtasks} /> \<tasklistsolid tasks={tasks()} refreshtasks={fetchtasks} /> \</> ); } seitenintegration in deiner hauptseite (z b src/pages/index astro ), verwalte den zustand der aufgaben und integriere deine komponenten \ // index astro import todoapp from ' /components/todoapp'; import layout from ' /layouts/layout astro'; import parse from ' /lib/parseclient'; \ \<layout> \<div class="container"> \<h1>to do list\</h1> \<todoapp client\ load /> \</div> \</layout> styling der anwendung um globale grundlegende stile hinzuzufügen, fügen sie die folgenden css stile in die layouts astro datei im src/layouts verzeichnis hinzu 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ügen sie jetzt das is\ global attribut zum style tag hinzu \<!doctype html> \<html lang="en"> \<head> \<meta charset="utf 8" /> \<meta name="viewport" content="width=device width" /> \<link rel="icon" type="image/svg+xml" href="/favicon svg" /> \<meta name="generator" content={astro generator} /> \<title>astro basics\</title> \</head> \<body> \<slot /> \</body> \</html> \<style is\ global> / your styles / \</style> bereitstellung des frontends auf back4app web deployment back4app web deployment bietet eine containerisierte umgebung, um ihre astro anwendung zu hosten generiere den produktionsbuild npm run build erstellen einer dockerfile erstelle eine dockerfile im stammverzeichnis deines projekts mit folgendem inhalt \# build stage from node 18 alpine as build workdir /app \# copy package files and install dependencies copy package json package lock json / run npm ci \# copy all files and build the application copy run npm run build \# production stage from node 18 alpine workdir /app \# set environment variables env node env=production env host=0 0 0 0 env port=3000 \# copy the build output from the build stage copy from=build /app/dist/ /dist/ \# install the static file server run npm install g serve \# expose the port expose 3000 \# start serving the static files from the "dist" folder cmd \["serve", " s", "dist", " l", "3000"] testen des docker containers lokal baue dein docker image docker build t todo frontend starte den container docker run p 3000 3000 todo frontend öffne http //localhost 3000 in deinem browser, um zu überprüfen, ob deine astro 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 von containern und die ressourcennutzung 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 astro frontend ordnungsgemäß mit dem back4app backend kommuniziert api verifizierung verwenden sie die entwicklertools ihres browsers (f12 → netzwerk), um api aufrufe zu überprüfen 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 astro um ihre anwendung zu optimieren effiziente anfragen verwenden sie batch operationen, wenn sie mehrere aufgaben bearbeiten const tasks = \[task1, task2, task3]; parse object saveall(tasks); optimierte abfragen nur notwendige felder abrufen query select('title', 'completed'); umgebungsmanagement sensible schlüssel in umgebungsvariablen speichern astro parse app id=your app id astro 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 nun eine vollständige to do listen anwendung erstellt, indem sie ein astro 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 astro 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 ressourcen der community