FastUI: Membuat Web UI yang Lebih Cepat dan Lebih Baik dengan Python
(github.com/pydantic)- FastUI adalah cara baru untuk membangun antarmuka pengguna aplikasi web dengan kode Python yang deklaratif
- Kumpulan model Pydantic dan antarmuka TypeScript yang mendefinisikan antarmuka pengguna
- Developer Python dapat membangun web app reaktif dengan React tanpa menggunakan JavaScript atau npm
- Developer frontend dapat fokus membangun komponen yang dapat digunakan ulang tanpa harus copy-paste setiap saat
- Bagi semua pengguna, dimungkinkan pemisahan concern yang sesungguhnya, di mana backend mendefinisikan seluruh aplikasi dan frontend hanya mengimplementasikan antarmuka pengguna
- Menyediakan berbagai komponen secara bawaan: autentikasi berbasis token, GitHub OAuth, Markdown, Text, Paragraph, Heading, Code, Button, Link, Navbar, Modal, ServerLoad, Image, Iframe, Video, Table, Pagination, ModelForm
Cara penggunaan nyata
- FastUI terdiri dari empat bagian:
- Paket PyPI
fastui: menyediakan model Pydantic dan utilitas untuk komponen UI. Bekerja sangat baik dengan FastAPI, tetapi tidak bergantung pada FastAPI, dan juga dapat digunakan dengan framework web Python lainnya. - Paket npm
@pydantic/fastui: paket React TypeScript yang memungkinkan Anda mengimplementasikan komponen sendiri sambil menggunakan kembali mekanisme dan tipe FastUI. - Paket npm
@pydantic/fastui-bootstrap: mengimplementasikan/menyesuaikan semua komponen FastUI dengan menggunakan Bootstrap. - Paket npm
@pydantic/fastui-prebuilt: menyediakan versi pra-build dari aplikasi React FastUI tanpa perlu memasang paket npm atau membangun apa pun sendiri. Paket Python menyediakan halaman HTML sederhana untuk menyajikan aplikasi ini.
- Paket PyPI
Prinsip (versi panjang)
- FastUI adalah implementasi prinsip RESTful, tetapi bukan dalam pengertian yang umum dipahami, melainkan mengikuti prinsip yang didefinisikan dalam disertasi doktor Roy Fielding.
- Menurut prinsip RESTful, frontend tidak perlu mengetahui aplikasi yang sedang dibangun, dan hanya perlu menyediakan semua komponen yang dibutuhkan untuk menyusun antarmuka.
- Membangun aplikasi dengan cara ini memiliki sejumlah keuntungan penting:
- Anda hanya perlu menulis kode di satu tempat untuk membangun fitur baru.
- Deployment frontend dan backend dapat dipisahkan sepenuhnya.
- Anda dapat menggunakan ulang kumpulan komponen open source, karena komponen tersebut tidak perlu mengetahui konteks tempat komponen digunakan.
- Dengan menggunakan Pydantic, TypeScript, dan JSON schema, dapat dipastikan kedua sisi berkomunikasi dengan skema yang telah disepakati.
Melampaui Python dan React
- Prinsip ini tidak terbatas pada aplikasi Python dan React saja; selama komunikasi dilakukan dengan skema dan encoding yang sama-sama disepakati, prinsip ini dapat digunakan pada frontend dan backend apa pun yang mengimplementasikan skema tersebut.
Opini GN⁺
- FastUI memiliki potensi untuk menyederhanakan proses pengembangan dengan menyediakan cara yang efisien bagi developer backend untuk memperluas aplikasi tanpa pengembangan frontend.
- Teknologi ini memperjelas pembagian peran antara frontend dan backend, sehingga dapat menciptakan lingkungan yang memaksimalkan pemanfaatan keahlian masing-masing.
- Saat ini FastUI masih merupakan proyek yang sedang berjalan, sehingga stabilitas dan fungsionalitasnya perlu ditinjau dengan cermat sebelum digunakan di lingkungan produksi nyata.
- Saat mengadopsi FastUI, perlu mempertimbangkan kompatibilitasnya dengan alur pengembangan frontend yang sudah ada, reusabilitas dan skalabilitas komponen, serta aspek pemeliharaan jangka panjang proyek.
- Keuntungan dari memilih teknologi ini adalah waktu pengembangan yang lebih singkat dan alur pengembangan yang berpusat pada backend, tetapi sebagai konsekuensinya fleksibilitas frontend bisa menjadi lebih terbatas, dan dukungan komunitas serta referensinya mungkin relatif masih kurang.
1 komentar
Opini Hacker News
Pendapat tentang keterikatan antara lapisan presentasi dan kode
Pengalaman mengembangkan aplikasi dengan FastUI dan Streamlit
Pendapat tentang Django dan HTMX
Kepraktisan aplikasi internal untuk penanganan event sisi server
Meningkatnya framework frontend yang memerlukan server backend
Perbandingan pengalaman memakai FastUI dan NiceGUI
Dampak perkembangan AI pada use case proyek
Pengalaman mengembangkan side project dengan Dart/Flutter
Perbandingan dengan Java Server Faces dan batas abstraksi sisi server
Pertanyaan apakah round-trip ke server cocok untuk membangun antarmuka pengguna