Toolkit untuk membangun aplikasi web yang cepat dan andal dan perpustakaan dengan karat dan WASM.
Gloo adalah kumpulan perpustakaan, dan perpustakaan -perpustakaan itu menyediakan pembungkus karat yang ergonomis untuk API browser. web-sys / js-sys sangat sulit / tidak nyaman untuk digunakan secara langsung sehingga GLOO menyediakan pembungkus di sekitar bindng mentah yang membuatnya lebih mudah untuk mengkonsumsi API tersebut. Inilah sebabnya mengapa disebut "toolkit", bukan "perpustakaan" atau "kerangka kerja".
Dalam roadmap 2019 Group Kerja Rust and WebAssembly, kami memilih untuk dengan sengaja mengolah ekosistem perpustakaan kami dengan membangun toolkit modular:
Berkolaborasi pada toolkit modular
Gagasan membangun [perpustakaan tingkat tinggi] dengan cara modular yang akan memungkinkan orang lain di komunitas untuk menyatukan komponen dengan cara yang berbeda sangat menarik bagi saya. Mudah -mudahan ini akan membuat ekosistem secara keseluruhan lebih kuat.
Secara khusus saya ingin melihat upaya modular untuk mengimplementasikan pustaka DOM virtual dengan sintaksis seperti JSX. Ada beberapa upaya di bagian depan ini, tetapi semuanya tampak relatif monolitik dan “termasuk baterai”. Saya harap ini akan berubah pada tahun 2019.
- Ryan Levick di Rust Webassembly 2019
Jangan membuat silo bermerek. Branding mungkin berguna untuk mencapai ketenaran. Tetapi jika kita benar -benar ingin cerita Wasm Rust berhasil kita harus memikirkan cara untuk berkolaborasi alih -alih mengukir wilayah.
- Yoshua Wuyts in Wasm 2019
Pada tahun 2018, kami membuat perpustakaan dasar seperti
js-sysdanweb-sys. Pada tahun 2019, kita harus membangun perpustakaan tingkat tinggi di atasnya, dan mengumpulkan perpustakaan di bawah peti toolkit payung untuk pengalaman holistik. Toolkit ini dan perpustakaannya akan menyediakan semua baterai yang Anda inginkan saat menargetkan WASM.Membangun Aplikasi Web Greenfield? Gunakan seluruh toolkit untuk mencapai ground running. Dengan hati -hati menyusun modul Wasm Tiny dan mengintegrasikannya kembali ke dalam proyek JavaScript yang ada? Raih satu perpustakaan yang ditargetkan yang Anda butuhkan dari toolkit dan menggunakannya dengan sendirinya.
GLOO adalah toolkit modular ini.
Mendukung seluruh aplikasi web dan perpustakaan kecil yang ditargetkan: GLOO, dan kumpulan peti utilitas yang membentuk toolkitnya, akan membantu Anda menjadi produktif jika Anda menulis aplikasi web lapangan hijau dengan Rust dan Wasm. Dan itu juga harus membantu Anda menjadi produktif jika Anda menulis perpustakaan wasm kecil yang ditargetkan yang akan diintegrasikan ke dalam aplikasi JavaScript yang ada.
Kembangkan Ekosistem Perpustakaan Rust and Wasm: Kami ingin menggunakan GLOO sebagai fungsi pemaksaan untuk membuat dan berbagi blok bangunan pengembangan web. Jenis perpustakaan yang perlu dibangun oleh kerangka kerja atau perpustakaan tingkat tinggi. Kami ingin secara eksplisit menguraikan perpustakaan -perpustakaan ini dan membuatnya tersedia untuk dibagikan di seluruh ekosistem.
Modular Toolkit, BUKAN Kerangka: GLOO harus menjadi kumpulan peti utilitas yang longgar yang dapat digunakan secara individual, atau semuanya bersama -sama. GLOO tidak berasumsi bahwa itu "memiliki" seluruh halaman web, bahwa ia mengontrol fungsi start WASM, dll. Kurangnya asumsi ini memungkinkan mencapai lebih banyak kasus penggunaan (seperti mengganti jalur kode panas dari JS) daripada kerangka kerja monolitik. Jika memungkinkan, Gloo harus lebih suka antarmuka daripada implementasi, sehingga implementasi yang berbeda dengan pendekatan yang berbeda dapat bertukar.
Cepat: Mari kita memanfaatkan abstraksi tanpa biaya Rust, dan desain dengan kinerja dalam pikiran, untuk menunjukkan kepada semua orang seberapa cepat web bisa;)
Dapat diandalkan: Setiap peti harus diuji secara menyeluruh. Tes browser tanpa kepala. Tes QuickCheck. Menggunakan sistem tipe untuk membuat seluruh kelas bug tidak mungkin.
Kecil: Ukuran kode kecil untuk beban halaman yang lebih cepat. Tidak ada secara tidak sengaja menarik semua infrastruktur panik dan memformat. Pengguna tidak harus melakukan pertukaran antara menggunakan perpustakaan GLOO dan memiliki biner wasm kecil.
Idiomatik: Kami ingin membangun Rust-Y API, rasanya alami untuk digunakan. API Web tidak dirancang untuk bahasa karat, dan Anda dapat merasakan ketidakcocokan impedansi sesekali. Mari kita perbaiki itu, jembatan celah, dan buat perpustakaan yang menyenangkan untuk digunakan.
Contoh ini menggunakan gloo::events untuk Menambahkan Pendengar Acara dan gloo::timers untuk Membuat Timeout. Ini membuat elemen <button> dan menambahkan pendengar acara "klik". Setiap kali tombol diklik, itu memulai waktu satu detik, yang mengatur konten teks tombol menjadi "Halo dari satu detik yang lalu!".
use gloo :: { events :: EventListener , timers :: callback :: Timeout } ;
use wasm_bindgen :: prelude :: * ;
pub struct DelayedHelloButton {
button : web_sys :: Element ,
on_click : events :: EventListener ,
}
impl DelayedHelloButton {
pub fn new ( document : & web_sys :: Document ) -> Result < DelayedHelloButton , JsValue > {
// Create a `<button>` element.
let button = document . create_element ( "button" ) ? ;
// Listen to "click" events on the button.
let button2 = button . clone ( ) ;
let on_click = EventListener :: new ( & button , "click" , move |_event| {
// After a one second timeout, update the button's text content.
let button3 = button2 . clone ( ) ;
Timeout :: new ( 1_000 , move || {
button3 . set_text_content ( Some ( "Hello from one second ago!" ) ) ;
} )
. forget ( ) ;
} ) ;
Ok ( DelayedHelloButton { button , on_click } )
}
} Ingin membantu kami membangun gloo? Lihat CONTRIBUTING.md !