Dioxus 0.5: penulisan ulang signals, penghapusan lifetime, hot reloading CSS, dan lainnya
- Di Dioxus Labs ada aturan tidak resmi yang hanya mengizinkan satu penulisan ulang per tahun.
- Dioxus adalah library untuk membangun GUI dengan Rust, yang awalnya dimulai sebagai penulisan ulang dari Yew.
- Dioxus 0.5 diubah ke arah yang lebih sederhana, kokoh, dan rapi sesuai permintaan komunitas.
Fitur baru
- Penulisan ulang penuh
dioxus-core yang menghapus semua kode unsafe.
- Beralih ke API berbasis
Signal tanpa clone tanpa menggunakan use_state dan use_ref.
- Menghapus semua lifetime dan status
cx: Scope.
- Memperkenalkan satu fungsi
launch untuk memulai aplikasi di semua platform.
- Hot reloading aset yang mendukung Tailwind dan Vanilla CSS.
- Penulisan ulang event yang memungkinkan akses ke tipe event dasar
WebSys di tiap platform.
- Ekstensi komponen untuk menambahkan atribut elemen (contoh: Link menerima semua atribut
<a/>).
- Error boundary terintegrasi serta integrasi server future dan Suspense.
- Kecepatan rekonsiliasi desktop meningkat 5x dan custom asset handler untuk byte streaming.
- Streaming server function dan hot reloading full-stack.
- Banyak peningkatan QoL, perbaikan bug, dan lainnya.
Masalah lifetime
- Untuk membuat Dioxus lebih sederhana, semua lifetime dihapus.
- Masalah lifetime mudah membuat pemula Rust takut, dan bahkan membingungkan developer Rust yang berpengalaman.
- Dioxus 0.5 menghapus lifetime dan
Scope serta memperkenalkan signals, solusi manajemen state Copy.
Penghapusan scope dan lifetime
- Pada versi baru, scope dan lifetime
'bump dihapus.
- Deklarasi komponen dan penggunaan fungsi runtime di dalam komponen menjadi jauh lebih mudah.
Semua kode unsafe dihapus
- Dengan penghapusan lifetime
'bump dan scope, banyak kode unsafe ikut dihapus.
- dioxus-core 0.5 tidak memiliki kode unsafe.
Signals
- Signals diperkenalkan sebagai elemen state inti komponen.
Signal<T> bersifat Copy meskipun nilai internal T bukan.
- Signals menyediakan subscription yang lebih cerdas, sehingga hanya komponen yang membaca signal yang akan dirender ulang.
Hot reloading CSS
- Mendukung hot reloading file CSS, dengan
dx CLI memantau file dan langsung melakukan streaming pembaruan ke aplikasi.
Penulisan ulang sistem event
- dioxus 0.5 mengekspos tipe event dasar di tiap platform dan memperkenalkan trait yang menyediakan API lintas platform.
Rilis lintas platform
- Melalui API lintas platform baru, beberapa platform dapat dengan mudah ditargetkan dengan aplikasi yang sama.
Sistem aset beta
- Sistem aset baru, manganis, terintegrasi dengan CLI untuk memeriksa, membundel, dan mengoptimalkan aset dalam aplikasi.
Kecepatan rendering desktop meningkat 5x
- Berbagai optimasi diterapkan untuk meningkatkan kecepatan rendering.
Ekstensi atribut
- Berguna saat memberikan fungsi tambahan pada elemen tertentu.
Singkatan atribut
- Dapat menggunakan sintaks singkatan atribut saat meneruskan atribut ke elemen dan komponen.
Penggabungan atribut multi-baris
- Menambahkan fitur penggabungan atribut agar atribut kondisional lebih mudah dibuat.
Streaming server function
- Mendukung agar server function dapat melakukan streaming data ke klien.
Platform CLI full-stack
- Aplikasi full-stack dapat disajikan menggunakan perintah
dx.
Dukungan router LiveView
- Router langsung berfungsi di aplikasi LiveView.
Custom asset handler
- Di desktop, custom asset handler didukung agar data dapat di-streaming ke browser secara efisien.
Penanganan file native
- Di desktop, file drop kini didukung dengan benar.
Penanganan error
- Error dalam aplikasi dapat ditangani dengan mudah menggunakan error boundary dan trait throw.
Hot reloading sebagai default dan mode "development" untuk desktop
- Hot reloading diaktifkan secara default, sangat meningkatkan pengalaman pengembangan aplikasi desktop.
Pembaruan template dioxus
- Anggota tim inti baru, Miles, merombak dokumentasi dan template secara besar-besaran.
Dioxus-Community dan Dioxus-std
- Dioxus Community memperbarui crate ekosistem penting agar sesuai dengan rilis 0.5.
Fitur yang akan segera hadir
- Stabilisasi dan integrasi sistem aset, bundle splitting untuk
.wasm, Islands dan interaksi yang dapat dilanjutkan, server components, developer tools yang ditingkatkan, serta perombakan mobile dan full-stack.
Pratinjau kebangkitan Dioxus-Blitz
- Dengan mengintegrasikan Servo sebagai "Blitz 2.0", rendering native dimungkinkan menggunakan WGPU dengan engine CSS yang sama yang digunakan untuk menjalankan Firefox.
Cara berkontribusi
- Anda dapat berkontribusi melalui penerjemahan dokumentasi, mencoba "good first issue", memperbaiki dokumentasi, berkontribusi ke CLI, menjawab pertanyaan komunitas di Discord, dan lainnya.
Pendapat GN⁺
- Dioxus 0.5 adalah pembaruan penting untuk pengembangan GUI berbasis Rust yang memberi developer lingkungan pengembangan yang lebih mudah dan aman.
- Penghapusan lifetime dan scope mengurangi kompleksitas pengembangan Rust, dan API berbasis Signal membuat manajemen state menjadi lebih sederhana.
- Hot reloading CSS dan perbaikan sistem event akan membantu meningkatkan produktivitas pengembangan frontend.
- Hot reloading dan fitur peluncuran lintas platform memungkinkan developer mendapatkan pengalaman pengembangan yang konsisten di berbagai platform.
- Perubahan ini diperkirakan akan berdampak positif pada komunitas Rust dan pengembangan web, khususnya bagi mereka yang membangun aplikasi web dan desktop dengan Rust.
1 komentar
Opini Hacker News
Pengalaman pengguna pertama terhadap perubahan di Dioxus 0.5
Pertanyaan tentang dukungan SVG
Rasa penasaran terhadap pemrograman Rust dan pertanyaan tentang cara kerja crate
generational-boxgenerational-boxdapat mempertahankan nilai tanpa penyalinan, dan apakah hal itu aman.Pengalaman mengembangkan beranda Freenet dengan Dioxus
Kesan tentang faktor kesuksesan React dan inovasi di Dioxus
Opini tentang RSX dibandingkan SwiftUI
Kekhawatiran tentang dihapusnya lifetime di Dioxus
Pertanyaan tentang integrasi dengan web component
Pertanyaan tentang cara rendering aplikasi native