Komunitas pengembangan web Ruby menunjukkan minat yang signifikan terhadap RubyUI (sebelumnya dikenal sebagai PhlexUI), sebuah koleksi komponen UI yang dapat digunakan kembali yang dibangun di atas mesin rendering Phlex. Namun, di samping pujian untuk pengalaman pengembangnya, muncul perdebatan sengit mengenai klaim performa proyek tersebut.
RubyUI mempresentasikan dirinya sebagai solusi bagi pengembang Rails yang ingin membangun komponen UI yang indah dan terorganisir yang dapat dengan mudah disalin dan disesuaikan. Berbeda dengan pustaka komponen tradisional, RubyUI mendorong pengembang untuk mengambil kepemilikan kode dengan menyalin komponen langsung ke dalam proyek mereka.
Klaim Performa Dipertanyakan
Salah satu aspek paling kontroversial dari RubyUI adalah klaimnya yang menyebutkan bahwa ia 12 kali lebih cepat daripada template Rails ERB tradisional. Pernyataan ini telah memicu perdebatan signifikan dalam komunitas, dengan beberapa pengembang mempertanyakan keakuratannya.
Sebuah diskusi yang cukup mendalam di komunitas menyoroti nuansa di balik klaim performa ini. Seorang pengembang menunjukkan bahwa meskipun Phlex (mesin yang menjalankan RubyUI) mungkin mengungguli ActionView dalam skenario spesifik dengan banyak komponen kecil, ini tidak selalu lebih cepat daripada ERB. Joel Drapper, tokoh penting dalam ekosistem Phlex, mengakui perbedaan ini:
Berdasarkan pengalaman saya, bukan hal yang ekstrem untuk merender ribuan komponen dalam satu tampilan... ActionView menjadi sangat lambat ketika Anda membangun tampilan seperti itu dengan menyusun ribuan partials — dan bagi orang-orang yang ingin membangun tampilan seperti itu, hal ini penting.
Klarifikasi ini menunjukkan bahwa manfaat performa bergantung pada konteks dan paling terlihat dalam aplikasi dengan tampilan yang sangat terkomponen.
Fitur Utama RubyUI
- Dibangun di atas mesin rendering Phlex
- Komponen UI yang dapat disesuaikan
- Pendekatan implementasi salin-dan-tempel
- Ketergantungan minimal menggunakan pengontrol Stimulus.js khusus
- Instalasi melalui gem Ruby
Perbandingan Kinerja (menurut klaim proyek)
- Phlex: Dasar
- ViewComponent: ~1,5x lebih lambat
- Template ERB: ~5x lebih lambat
Proyek Terkenal yang Menggunakan Phlex
- Clearscope: 454+ komponen
- MagicNotes.ai
- Baheth.ieasybooks.com
Pengalaman Pengembang Mendorong Adopsi
Terlepas dari perdebatan performa, banyak pengembang mengadopsi RubyUI dan Phlex terutama karena pengalaman pengembang yang lebih baik. Kemampuan untuk menulis komponen UI dalam Ruby murni daripada beralih antara Ruby dan template ERB tampaknya menjadi daya tarik yang signifikan.
Anggota komunitas melaporkan bahwa penggunaan metode privat sebagai partials telah menjadi terobosan untuk refactoring UI, dan beberapa pengembang menyebutkan mereka sudah menggunakan Phlex dalam aplikasi produksi. Halaman GitHub proyek ini mencantumkan Clearscope sebagai aplikasi terbesar yang menggunakan tampilan Phlex secara eksklusif, dengan lebih dari 450 komponen.
Pertimbangan Arsitektur Komponen
Pendekatan RubyUI mendorong struktur komponen yang sangat terperinci, di mana pengembang mungkin membuat komponen terpisah tidak hanya untuk bagian halaman utama seperti header, tetapi juga untuk item navigasi individual dan bahkan ikon. Tingkat abstraksi ini mewakili pergeseran dalam cara aplikasi Rails menyusun tampilan mereka.
Sementara beberapa pengembang menghargai perincian ini, yang lain telah mengajukan pertanyaan tentang pertimbangan praktis seperti manajemen namespace dan organisasi komponen. Komunitas masih menetapkan konvensi seputar pola arsitektur ini, dengan satu pengembang mencatat bahwa karena hal ini masih baru, ada lebih sedikit konvensi, sehingga Anda harus membuatnya sendiri dan konsisten.
Saat RubyUI terus mendapatkan daya tarik, komunitas Ruby kemungkinan akan mengembangkan pola yang lebih mapan untuk memanfaatkan pendekatan berbasis komponen ini secara efektif. Untuk saat ini, proyek ini mewakili evolusi menarik dalam pengembangan frontend Rails yang memprioritaskan pengalaman pengembang sambil mendorong batas performa rendering tampilan.
Referensi: RubyUI (sebelumnya PhlexUI)