Quickstarters
Cara Membangun Frontend Solid.js dan Menghubungkannya ke Backend
34 mnt
dalam panduan ini, anda akan membangun aplikasi daftar tugas menggunakan solid js dan menghubungkannya ke backend yang kuat yang didukung oleh back4app tutorial ini dirancang sebagai titik awal yang ideal karena mencakup operasi crud (buat, baca, perbarui, hapus) yang mendasar dan membimbing anda melalui desain antarmuka pengguna yang jelas dan fungsional pada akhir tutorial, anda akan memiliki aplikasi yang sepenuhnya beroperasi yang menunjukkan cara mengintegrasikan layanan backend yang dikelola sambil memanfaatkan solid js untuk frontend yang responsif mengembangkan aplikasi full stack bisa menjadi tantangan karena kompleksitas dalam menyiapkan backend, mengelola database, menangani otentikasi, dan menerapkan infrastruktur untuk menyederhanakan proses ini, kami menggunakan back4app, yang menawarkan solusi backend as a service (baas) , memungkinkan anda untuk berkonsentrasi pada pembuatan frontend anda sementara ia mengelola hosting, database, dan api back4app menyediakan layanan backend yang komprehensif, termasuk database siap pakai, otentikasi, cloud code untuk logika sisi server, dan sdk untuk integrasi yang mulus ini juga mendukung penerapan terkontainer, menjadikannya pilihan yang fleksibel untuk hosting aplikasi full stack dengan alat alat ini, anda dapat dengan cepat mengembangkan dan menerapkan aplikasi tanpa khawatir tentang pemeliharaan server poin penting dengan mengikuti tutorial ini, anda akan belajar untuk menginisialisasi proyek solid js modern menggunakan vite mengintegrasikan layanan backend dengan mulus untuk menangani data aplikasi anda menerapkan operasi crud yang penting untuk antarmuka pengguna yang dinamis dan interaktif menyebarkan aplikasi daftar tugas yang sepenuhnya fungsional menggunakan alur kerja terkontainer di back4app prasyarat pastikan anda memiliki alat dan keterampilan ini sebelum anda mulai node js dan npm instal node js (lts disarankan) dari nodejs org https //nodejs org/ dan verifikasi dengan menjalankan node v dan npm v di terminal anda pengetahuan dasar solid js keterampilan dengan komponen, sinyal reaktif (menggunakan createsignal ), dan sintaks jsx diperlukan jika anda baru mengenal solid js, pertimbangkan untuk meninjau dasar dasarnya terlebih dahulu akun back4app daftar di back4app https //www back4app com/ untuk mengatur dan mengelola layanan backend anda dengan prasyarat ini, anda siap untuk mengatur proyek anda dan mulai membangun pengaturan proyek mulailah dengan menyiapkan lingkungan pengembangan lokal anda dan menginisialisasi proyek solid js anda menggunakan vite untuk pengalaman pengembangan yang cepat verifikasi bahwa node js (versi lts) terinstal di mesin anda jika perlu, unduh dan instal dari nodejs org https //nodejs org/ konfirmasikan instalasi node v npm v inisialisasi proyek solid js anda menggunakan vite jalankan perintah berikut di terminal anda (ganti todo app dengan nama proyek yang anda inginkan) npm create vite\@latest todo app template solid beralih ke direktori proyek anda cd todo app instal semua dependensi yang diperlukan npm install mulai server pengembangan untuk mengonfirmasi pengaturan anda npm run dev aplikasi solid js anda sekarang harus berjalan secara lokal buka url yang ditampilkan di browser anda untuk memverifikasi selanjutnya, anda akan menyiapkan backend anda di back4app untuk mengelola penyimpanan data dan interaksi api membuat backend todo back4app menawarkan layanan backend yang sepenuhnya dikelola yang didukung oleh parse , menyediakan database nosql, otentikasi, cloud code, dan api yang dihasilkan secara otomatis langsung dari kotak bagian ini membimbing anda melalui pembuatan model data task untuk menyimpan item daftar tugas anda dan menghubungkannya dengan frontend solid js anda menyiapkan aplikasi backend anda masuk ke dasbor back4app https //www back4app com/ dan klik pada "buat aplikasi baru " beri nama aplikasi anda (misalnya, todosolidapp ) dan pilih nodejs/parse sebagai jenis backend setelah aplikasi dibuat, navigasikan ke "database" > "browser" klik "buat kelas" dan pilih "kustom" beri nama kelas task dan atur izin tingkat kelas untuk mengizinkan baca dan tulis publik (anda dapat memperketat pengaturan ini nanti) di kelas task , tambahkan bidang berikut judul (string) – judul tugas deskripsi (string) – rincian tugas selesai (boolean) – status yang menunjukkan apakah tugas telah selesai tanggaljatuhtempo (tanggal) – tenggat waktu untuk tugas klik "simpan" untuk menyelesaikan skema anda mengintegrasikan back4app dengan solid js integrasikan back4app ke dalam proyek solid js anda menggunakan parse javascript sdk untuk berkomunikasi dengan backend anda instal sdk melalui npm npm install parse konfigurasikan sdk dengan menginisialisasinya menggunakan application id dan javascript key ambil ini dari dasbor back4app anda di bawah app settings > security & keys di src/index jsx anda (atau file entri yang setara), impor dan konfigurasikan parse sebagai berikut import { render } from "solid js/web"; import ' /index css' import app from " /app"; 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; render(() => \<app />, document getelementbyid("root")); dengan backend yang dikonfigurasi, anda siap untuk membangun ui daftar tugas di solid js dan menerapkan operasi crud mengembangkan frontend dengan solid js sekarang backend anda terhubung, bangun antarmuka pengguna untuk aplikasi daftar tugas anda menggunakan solid js anda akan membuat komponen untuk menambah, menampilkan, memperbarui, dan menghapus tugas sambil mengelola status dengan sinyal reaktif mengorganisir komponen anda aplikasi anda akan terdiri dari komponen kunci ini taskform jsx – mengelola penambahan tugas baru tasklist jsx – menampilkan semua tugas dan menawarkan kontrol untuk menyelesaikan atau menghapusnya taskitem jsx – mewakili tugas individu dengan tindakan untuk menandai sebagai selesai atau menghapus buat sebuah folder komponen di dalam src dan tambahkan file file ini mkdir src/components touch src/components/taskform jsx src/components/tasklist jsx src/components/taskitem jsx mengelola status dengan solid js manfaatkan createsignal dan createeffect dari solid js untuk manajemen status dan efek samping mulailah dengan mengatur status di app jsx import { createsignal, onmount } from "solid js"; import taskform from " /components/taskform"; import tasklist from " /components/tasklist"; import parse from "parse/dist/parse min js"; function app() { 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 ( \<div class="container"> \<h1>to do list\</h1> \<taskform fetchtasks={fetchtasks} /> \<tasklist tasks={tasks()} fetchtasks={fetchtasks} /> \</div> ); } export default app; membangun komponen form tugas di taskform jsx , buat form terkontrol untuk menambahkan tugas kelola nilai input dengan createsignal dan kirim data ke back4app import { createsignal } from "solid js"; import parse from "parse/dist/parse min js"; function taskform(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(); props fetchtasks(); 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> ); } export default taskform; menampilkan daftar tugas di tasklist jsx , render daftar tugas menggunakan komponen taskitem untuk setiap entri import taskitem from " /taskitem"; function tasklist(props) { return ( \<div> {props tasks length === 0 ? ( \<p>no tasks available\</p> ) ( props tasks map(task => ( \<taskitem key={task id} task={task} fetchtasks={props fetchtasks} /> )) )} \</div> ); } export default tasklist; membuat komponen item tugas di taskitem jsx , atur tindakan untuk menandai tugas sebagai selesai atau menghapusnya import parse from "parse/dist/parse min js"; function taskitem(props) { const handlecomplete = async () => { try { const query = new parse query("task"); const tasktoupdate = await query get(props task id); tasktoupdate set("completed", !props task completed); await tasktoupdate save(); props fetchtasks(); } catch (error) { console error("error updating task ", error); } }; const handledelete = async () => { try { const query = new parse query("task"); const tasktodelete = await query get(props task id); await tasktodelete destroy(); props fetchtasks(); } catch (error) { console error("error deleting task ", error); } }; return ( \<div class={`task item ${props task completed ? "completed" ""}`}> \<h3>{props task title}\</h3> \<p>{props task description}\</p> \<button onclick={handlecomplete}> {props task completed ? "undo" "complete"} \</button> \<button onclick={handledelete}>delete\</button> \</div> ); } export default taskitem; menata aplikasi anda tambahkan gaya berikut di index css file di folder src / center the content and add spacing / 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; 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; } container p { font size 1rem; } 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; } } impor file css di src/index jsx import " /index css"; menyelesaikan ui aplikasi to do list solid js anda sekarang memiliki frontend dinamis yang terintegrasi dengan back4app dan gaya kustom aplikasi ini memungkinkan anda untuk menambah, menampilkan, memperbarui, dan menghapus tugas sambil menjaga komunikasi frontend backend yang efisien selanjutnya, anda akan menerapkan aplikasi solid js anda menggunakan platform web deployment back4app menerapkan frontend di web deployment back4app web deployment back4app menawarkan lingkungan terkelola sepenuhnya dan tercontainer untuk menerapkan aplikasi anda dengan penerapan berbasis docker, anda dapat mengemas frontend solid js anda dan menerapkannya dengan mudah mengonfigurasi vite untuk produksi aplikasi solid js yang dibangun dengan vite berjalan dalam mode pengembangan secara default untuk produksi, bangun versi statis dan sajikan dengan server web ringan seperti nginx perbarui vite config js untuk mengatur jalur dasar yang tepat import { defineconfig } from 'vite'; import solidplugin from 'vite plugin solid'; export default defineconfig({ plugins \[solidplugin()], base ' /', // ensures correct asset paths in containerized environments }); hasilkan file siap produksi npm run build membuat dockerfile untuk aplikasi anda buat sebuah dockerfile di root proyek untuk mendefinisikan bagaimana aplikasi anda dikontainerisasi # use an official lightweight node js image to build the app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build \# use nginx to serve the static files from nginx\ alpine \# copy custom nginx config for spa routing copy nginx conf /etc/nginx/conf d/default conf \# copy built app from build stage copy from=build /app/dist /usr/share/nginx/html expose 80 cmd \["nginx", " g", "daemon off;"] setelah membuat dockerfile anda, konfigurasikan nginx untuk merutekan permintaan dengan benar ke file index html root aplikasi solid js anda saat anda mencoba mengakses rute secara langsung untuk melakukan ini, buat sebuah nginx conf file di direktori root proyek anda dan tempelkan blok kode di bawah ini server { listen 80; server name localhost; root /usr/share/nginx/html; index index html; \# gzip settings for better performance gzip on; gzip vary on; gzip min length 10240; gzip proxied expired no cache no store private auth; gzip types text/plain text/css text/xml text/javascript application/x javascript application/xml application/javascript; gzip disable "msie \[1 6]\\ "; \# handle static file requests location \\ (?\ jpg|jpeg|gif|png|ico|svg|woff2|woff|eot|ttf|css|js)$ { expires 30d; add header cache control "public, max age=2592000"; try files $uri =404; } \# redirect all requests to index html for spa routing location / { try files $uri $uri/ /index html; } \# error pages error page 404 /index html; error page 500 502 503 504 /50x html; location = /50x html { root /usr/share/nginx/html; } } mengujicoba kontainer secara lokal sebelum penyebaran, bangun dan uji kontainer docker anda docker build t todo solid frontend jalankan kontainer docker run p 8080 80 todo solid frontend kunjungi http //localhost 8080 di browser anda untuk memastikan bahwa aplikasi anda disajikan dengan benar mengunggah ke github dan menerapkan melalui back4app dorong proyek anda ke 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 kemudian, lakukan penyebaran menggunakan back4app web deployment masuk ke back4app web deployment https //www back4app com/containers klik "buat aplikasi baru" , berikan nama, dan pilih github repository otorisasi back4app untuk mengakses repositori anda dan pilih todo solid repo pilih dockerfile deployment dan konfirmasi pengaturan build klik "deploy" untuk memulai proses build memantau dan mengelola penyebaran setelah penyebaran, gunakan dasbor back4app untuk melihat log untuk debugging memantau kinerja kontainer dan penggunaan sumber daya memicu penyebaran ulang dengan komit baru mengonfigurasi domain kustom jika diinginkan pengujian dan debugging aplikasi anda setelah diterapkan, uji aplikasi solid js anda secara menyeluruh verifikasi konektivitas api buka konsol pengembang browser (f12 → jaringan) untuk memeriksa panggilan api selama operasi tugas tambahkan dan ambil tugas gunakan ui untuk menambahkan tugas, lalu segarkan dan konfirmasi keberlanjutan data di browser database back4app operasi crud uji penandaan tugas selesai dan penghapusan, memastikan pembaruan tercermin di backend tangani kasus tepi validasi input formulir dan simulasi kondisi jaringan yang lebih lambat menggunakan alat pengembang browser jika masalah muncul, konsultasikan log back4app atau tinjau konfigurasi api anda praktik terbaik untuk menggunakan layanan back4app tingkatkan kinerja dan keamanan aplikasi anda dengan mengoptimalkan panggilan api gunakan permintaan batch untuk beberapa operasi dan pilih hanya bidang yang diperlukan dalam kueri mengamankan variabel lingkungan simpan kredensial sensitif dalam variabel lingkungan dengan vite, buat sebuah env file vite parse app id=your app id vite parse js key=your js key mengimplementasikan auto scaling aktifkan auto scaling di back4app web deployment untuk skenario lalu lintas tinggi meningkatkan keamanan gunakan izin tingkat kelas (clp) untuk membatasi modifikasi data dan atur acl sesuai kebutuhan memanfaatkan cloud code alihkan logika kompleks ke cloud code untuk meningkatkan kinerja dan mengurangi paparan api kesimpulan anda sekarang telah membangun aplikasi to do list full stack menggunakan solid js untuk frontend dan layanan backend back4app yang kuat tutorial ini mencakup perjalanan dari menginisialisasi proyek solid js dan mengintegrasikan parse sdk hingga menerapkan aplikasi anda melalui alur kerja terkontainer di back4app saat anda melanjutkan, pertimbangkan untuk menambahkan fitur seperti otentikasi pengguna yang lebih canggih, pembaruan waktu nyata, dan integrasi pihak ketiga untuk lebih meningkatkan aplikasi anda untuk detail lebih lanjut dan dukungan, jelajahi dokumentasi back4app https //www back4app com/docs