Quickstarters
Cara Membangun Frontend Astro dan Menghubungkannya ke Backend?
34 mnt
dalam tutorial ini, anda akan membangun aplikasi daftar tugas menggunakan astro dan menghubungkannya ke layanan backend yang dikelola yang didukung oleh back4app panduan ini dirancang untuk anda jika anda ingin menguasai operasi crud (buat, baca, perbarui, hapus) yang penting sambil membangun frontend statis modern dengan data dinamis menggunakan astro pada akhir tutorial ini, aplikasi anda akan berinteraksi dengan mulus dengan backend yang menangani penyimpanan data, otentikasi, dan lainnya mengembangkan aplikasi full stack bisa menjadi tantangan karena konfigurasi backend dan manajemen database untuk memperlancar proses anda, kami menggunakan back4app— backend as a service yang kuat —sehingga anda dapat fokus pada pembuatan frontend astro yang cepat dan ringan back4app menyediakan database nosql yang sepenuhnya dikelola, otentikasi pengguna, cloud code untuk logika kustom, dan sdk untuk integrasi yang mulus ini memungkinkan anda untuk membangun dan menerapkan aplikasi yang dapat diskalakan tanpa mengelola infrastruktur server poin penting dengan mengikuti tutorial ini, anda akan menginisialisasi proyek astro modern dengan vite mengintegrasikan layanan backend untuk mengelola data aplikasi anda menerapkan operasi crud yang penting untuk sebuah daftar to do dinamis menyebarkan aplikasi fungsional penuh anda menggunakan alur kerja terkontainer di back4app prasyarat sebelum anda mulai, pastikan anda memiliki node js dan npm terinstal di mesin anda verifikasi instalasi dengan node v dan npm v pengetahuan dasar tentang astro , termasuk routing berbasis file dan pembuatan komponen akun back4app untuk mengelola layanan backend anda daftar di back4app https //www back4app com/ jika anda belum melakukannya dengan prasyarat ini, anda siap untuk mulai membangun proyek anda pengaturan proyek mulailah dengan menyiapkan lingkungan pengembangan lokal anda dan menginisialisasi proyek astro baru pastikan anda telah node js (versi lts) terinstal jika tidak, unduh dari nodejs org https //nodejs org/ buat proyek astro anda dengan menjalankan npm create astro\@latest todo app navigasikan ke direktori proyek anda cd todo app mulai server pengembangan untuk memverifikasi pengaturan npm run dev aplikasi astro anda sekarang harus terbuka di browser anda dengan frontend anda siap, lanjutkan untuk membuat backend anda di back4app membuat backend todo back4app menawarkan layanan backend yang sepenuhnya dikelola yang didukung oleh parse , yang mencakup database nosql, otentikasi, cloud code, dan api yang dihasilkan secara otomatis ikuti langkah langkah ini untuk mengatur backend anda masuk ke dasbor back4app https //www back4app com/ dan klik "buat aplikasi baru " beri nama aplikasi anda (misalnya, todoapp ) dan pilih nodejs/parse sebagai jenis backend navigasi ke "database" > "browser" , klik "buat kelas" , dan pilih "kustom" beri nama kelas task dan atur izinnya untuk memungkinkan baca dan tulis publik (anda dapat memperbaiki ini nanti) di kelas task , tambahkan bidang berikut judul (string) – judul tugas deskripsi (string) – detail tentang tugas selesai (boolean) – status penyelesaian tugas tanggaljatuhtempo (tanggal) – tenggat waktu untuk tugas klik "simpan" untuk membuat skema mengintegrasikan back4app dengan astro anda akan menggunakan parse javascript sdk untuk menghubungkan aplikasi astro anda ke backend back4app instal parse sdk npm install parse konfigurasikan sdk dengan membuat modul khusus misalnya, buat file di src/lib/parseclient js dengan konten berikut 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; anda sekarang dapat mengimpor modul ini di komponen atau halaman astro anda untuk berinteraksi dengan backend mengembangkan frontend aplikasi astro anda akan terdiri dari komponen dan halaman untuk menambah, menampilkan, memperbarui, dan menghapus tugas gunakan routing berbasis file dan komponen astro untuk membangun daftar tugas yang dinamis menyusun komponen anda untuk membuat frontend anda, anda akan memanfaatkan solid js untuk menggunakan solid js di astro, instal paket solid js seperti ini npm install solid js buat folder src/components untuk mengatur komponen ui anda mkdir src/components anda akan membuat komponen berikut taskformsolid jsx – untuk menambahkan tugas baru taskitemsolid jsx – untuk mewakili tugas individu tasklistsolid jsx – untuk menampilkan daftar tugas todoapp jsx – untuk menampilkan aplikasi lengkap taskformsolid jsx komponen ini merender sebuah formulir yang menangkap detail tugas dan mengirimkannya ke back4app // 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 komponen ini mewakili sebuah tugas individu, menyediakan tombol untuk mengubah status penyelesaiannya atau menghapus tugas tersebut // 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 komponen ini menampilkan daftar tugas dengan mengiterasi array dan merender setiap taskitem // 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 komponen ini mengimpor dan menampilkan komponen lainnya ini menampilkan seluruh aplikasi // 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} /> \</> ); } integrasi halaman di halaman utama anda (misalnya, src/pages/index astro ), kelola status tugas dan integrasikan komponen anda \ // 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 aplikasi untuk menambahkan gaya dasar global, tambahkan gaya css di bawah ini ke layouts astro file di src/layouts direktori 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; } } sekarang tambahkan atribut is\ global ke tag style \<!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> menyebarkan frontend di back4app web deployment back4app web deployment menyediakan lingkungan terkontainer untuk menghosting aplikasi astro anda hasilkan build produksi npm run build membuat dockerfile buat sebuah dockerfile di root proyek anda dengan konten berikut \# 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"] menguji kontainer docker secara lokal bangun gambar docker anda docker build t todo frontend jalankan kontainer docker run p 3000 3000 todo frontend buka http //localhost 3000 di browser anda untuk memverifikasi bahwa aplikasi astro anda disajikan dengan benar menyebarkan ke back4app inisialisasi repositori git, tambahkan file proyek anda, dan lakukan 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 masuk ke penyebaran web back4app https //www back4app com/containers klik "buat aplikasi baru" , berikan nama proyek anda, dan pilih repositori github anda otorisasi back4app dan pilih penyebaran dockerfile konfirmasi pengaturan build dan klik "sebarkan" untuk memulai penyebaran memantau penyebaran anda setelah penyebaran, gunakan dasbor back4app untuk melihat log untuk debugging memantau kinerja kontainer dan penggunaan sumber daya memicu pembangunan ulang pada komit baru mengonfigurasi domain kustom jika diperlukan akses aplikasi langsung anda di https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ pengujian dan debugging setelah penerapan, pastikan bahwa frontend astro anda berkomunikasi dengan backend back4app dengan benar verifikasi api gunakan alat pengembang browser anda (f12 → jaringan) untuk memeriksa panggilan api operasi tugas tambahkan, selesaikan, dan hapus tugas melalui ui dan verifikasi pembaruan di browser database back4app penanganan kesalahan periksa log konsol untuk kesalahan dan uji kasus tepi seperti pengiriman kosong pengujian kinerja simulasikan kondisi jaringan lambat menggunakan alat browser untuk menilai responsivitas praktik terbaik untuk menggunakan back4app dengan astro untuk mengoptimalkan aplikasi anda permintaan efisien gunakan operasi batch saat menangani beberapa tugas const tasks = \[task1, task2, task3]; parse object saveall(tasks); kueri yang dioptimalkan ambil hanya bidang yang diperlukan query select('title', 'completed'); manajemen lingkungan simpan kunci sensitif dalam variabel lingkungan astro parse app id=your app id astro parse js key=your js key keamanan gunakan acl untuk membatasi akses task setacl(new parse acl(parse user current())); pengalihan backend manfaatkan cloud code untuk logika kompleks untuk mengurangi paparan api kesimpulan anda sekarang telah membangun aplikasi to do list full stack dengan membuat frontend astro, mengintegrasikannya dengan backend back4app, dan menyebarkannya menggunakan alur kerja terkontainer tutorial ini memandu anda melalui setiap langkah—dari pengembangan lokal hingga penyebaran cloud—memastikan interaksi yang mulus antara ui astro anda dan layanan backend melihat ke depan, pertimbangkan peningkatan seperti pembaruan waktu nyata, autentikasi yang lebih baik, dan integrasi pihak ketiga untuk pembelajaran lebih lanjut, kunjungi dokumentasi back4app https //www back4app com/docs dan jelajahi sumber daya komunitas