24 poin oleh GN⁺ 2024-03-03 | 1 komentar | Bagikan ke WhatsApp
  • 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.

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

 
GN⁺ 2024-03-03
Opini Hacker News
  • Pendapat tentang keterikatan antara lapisan presentasi dan kode

    • Keterikatan antara lapisan presentasi dan kode: Lapisan presentasi tidak boleh terhubung terlalu erat dengan kode. Bahasa templat lebih cocok daripada Python, dan akan lebih baik jika templat dapat dirender dalam berbagai bahasa.
  • Pengalaman mengembangkan aplikasi dengan FastUI dan Streamlit

    • Penggunaan FastUI dan Streamlit: Pernah membuat prototipe dengan Streamlit, tetapi kadang terasa kurang nyaman. FastUI masih memiliki kekurangan, namun saat digunakan untuk aplikasi ringan, responsnya terasa lebih cepat dibandingkan Streamlit.
  • Pendapat tentang Django dan HTMX

    • Django dan HTMX: Kombinasi Django dan HTMX terasa elegan dan bekerja cepat. Hanya mengirim kode yang dirender ke frontend, dan saat skala membesar, pengelolaan DB tetap bisa dilakukan.
  • Kepraktisan aplikasi internal untuk penanganan event sisi server

    • Penanganan event sisi server: Konsep ini bukan hal baru, dan ada contoh lain seperti Solara berbasis React atau NiceGUI berbasis Vue. Ini sangat praktis untuk aplikasi internal, tetapi perlu menerima adanya sedikit latensi saat event untuk semua kontrol ditangani di sisi server.
  • Meningkatnya framework frontend yang memerlukan server backend

    • Kompleksitas framework frontend: Banyak framework frontend harus menjalankan server backend hanya untuk merender HTML dasar. Muncul pertanyaan apakah fitur yang ditawarkan framework semacam ini benar-benar cukup untuk membenarkan kompleksitas tersebut.
  • Perbandingan pengalaman memakai FastUI dan NiceGUI

    • FastUI dan NiceGUI: NiceGUI memberikan pengalaman yang enak dipakai langsung sejak awal. FastUI tampak lebih seperti adaptor formulir untuk model Pydantic.
  • Dampak perkembangan AI pada use case proyek

    • AI dan pengembangan frontend: Gagasan agar developer backend bisa dengan cepat membuat UI dalam bahasa mereka sendiri memang valid, tetapi kebutuhan akan proyek seperti ini bisa melemah karena AI kini dapat dipakai selama beberapa jam untuk menghasilkan UI dasar.
  • Pengalaman mengembangkan side project dengan Dart/Flutter

    • Penggunaan Dart/Flutter: Menulis side project dengan Dart/Flutter meminimalkan gesekan dan terasa tidak terlalu merepotkan. Jika harus membuat aplikasi web dan Flutter tidak cocok, maka akan memilih HTMX.
  • Perbandingan dengan Java Server Faces dan batas abstraksi sisi server

    • Pengalaman dengan Java Server Faces: Terasa mirip dengan Java Server Faces. Upaya memindahkan nuansa pengembangan frontend ke abstraksi sisi server kemungkinan hanya akan berhasil untuk kumpulan aplikasi yang terbatas, seperti UI administrasi.
  • Pertanyaan apakah round-trip ke server cocok untuk membangun antarmuka pengguna

    • Round-trip ke server: Muncul pertanyaan apakah bolak-balik ke server untuk setiap interaksi klien selalu merupakan ide yang baik dalam membangun antarmuka pengguna.