WebAssembly (WASM) to przenośny, niskopoziomowy format kodu binarnego, który działa w nowoczesnych przeglądarkach, tak jak robi to JavaScript. W rzeczywistości WebAssembly jest również interoperacyjny z JavaScript. Możesz transpilować większość kodu źródłowego programu do WebAssembly i uruchomić go w przeglądarce z lub bez JavaScript.
Rust jest szybki, dzięki czemu język jest realną opcją do budowania programów WebAssembly. Istnieje wiele bibliotek i struktur Rust, które mogą pomóc, z obsługą narzędzi używanych do tworzenia aplikacji internetowych.
1. Biblioteka Jaworowa
Jawor to szybka, ergonomiczna i intuicyjna struktura reaktywna podobna do SolidJS. Możesz go używać do tworzenia aplikacji internetowych w Rust, które wykorzystują moc WebAssembly. Sycamore zapewnia większość funkcji potrzebnych do stworzenia frontendu aplikacji internetowej w Rust, więc nie musisz pisać JavaScript.
Sycamore zapewnia również interoperacyjność routera i JavaScript przez Wasm-Bindgen przy użyciu JS-sys lub Web-Sys. Projekt zamierza wkrótce udostępnić funkcje testowania i CSS.
Aby korzystać z Sycamore, potrzebujesz najnowszej wersji Rust — the wasm32-nieznany-nieznany cel. Potrzebny będzie również Trunk, aby zbudować i spakować swoją aplikację. Ponieważ Sycamore jest nowy, korzystanie z głównej biblioteki gałęzi w produkcji będzie ryzykowne, chyba że skorzystasz z wcześniejszej wersji.
2. Cisowe ramy
Cis jest frameworkiem Rust do tworzenia wielowątkowych frontendowych aplikacji internetowych przy użyciu WebAssembly. Pozwala na pisanie kodu Rusta i transpilację kodu Rusta do WASM, który może działać na dowolnym urządzeniu z obsługą WASM. Yew jest kompatybilny z JavaScript (możesz użyć swojego pakiety npm), a framework dostarcza makro do interakcji z elementami HTML z Rustem, jak JSX w React.
Możesz rozpocząć pracę z Yew za pomocą pakietu aplikacji Trunk lub WASMPack. Zapoznaj się z dokumentacją, aby dowiedzieć się, jak zacząć, wchodzić w interakcję z HTML i API DOM i przetranspiluj swój kod Rust do WebAssembly.
Projekt Yew jest bardzo popularny, z ponad dwudziestoma tysiącami gwiazdek na Github i pięcioma tysiącami użytkowników. Cis jest stabilny, ale projekt nie jest gotowy do produkcji, a baza kodu się zmienia, więc mogą wystąpić błędy i przerwy.
3. Biblioteka Percy'ego
Percy jest zbiorem bibliotek Rust do tworzenia frontendowych aplikacji internetowych obsługiwanych przez WebAssembly. Percy obsługuje natychmiastowe renderowanie po stronie serwera. Projekt wyróżnia się tworzeniem jednostronicowych aplikacji przyjaznych dla wyszukiwarek (SPA).
Percy zapewnia html! makro do generowania wirtualnych DOM-ów. Możesz renderować je do elementów DOM w interfejsie użytkownika lub używać ich do operacji w zapleczu aplikacji.
Percy jest wciąż bardzo nowy i chociaż biblioteka nie jest gotowa do produkcji, projekt jest bardzo popularny, z ponad dwoma tysiącami gwiazd na Github.
4. Ramy nasienne
Nasionko to dołączona do baterii, pełna platforma oparta na WebAssembly do tworzenia szybkich aplikacji internetowych w Rust. Struktura Seed zapewnia system szablonów, który używa składni makr zamiast składni podobnej do JSX Yew. Posiada również wbudowany system zarządzania stanem w celu zwiększenia produktywności.
Materiał siewny jest nowy, a gotowe komponenty, takie jak selektory dat, są rzadkie. Chociaż Seed nie obsługuje obecnie renderowania po stronie serwera, projekt zamierza wkrótce go uwzględnić. W przeciwnym razie Seed jest kompletny i można za jego pomocą tworzyć aplikacje internetowe gotowe do produkcji. Seed używa również architektury Elm z minimalną konfiguracją. Możesz tworzyć i łączyć swoje aplikacje za pomocą Trunk, Web Bundler lub Seeder.
Możesz również użyć Seed do zaplecza swojej aplikacji internetowej. Seed zapewnia funkcjonalność do budowania interfejsów API REST lub GraphQL z obsługą routingu i uwierzytelniania oraz integracją z AuthO.
KsiężycZoon jest łatwym w użyciu, pełnym stosem, wspieranym przez WebAssembly frameworkiem dla aplikacji frontendowych i backendowych. Możesz pisać Rust bez konieczności pisania HTML, CSS i JavaScript na frontendzie lub REST, GraphQL lub SQL na zapleczu. MoonZoon jest szybki, prosty, skalowalny i przyjazny dla SEO. Zapewnia aplikację CLI do tworzenia aplikacji internetowych, które są łatwe do wdrożenia.
Filozofia projektu MoonZoon polega na stworzeniu bardzo prostego narzędzia bez specjalnej terminologii, sztucznych barier czy dogmatów. Korzystając z niego, możesz skupić się na tworzeniu aplikacji internetowych według własnego uznania. Aby zbudować interfejs, musisz mieć zainstalowany WASM-Pack. Backend aplikacji MoonZoon działa na Actix-web i Warp, popularnych frameworkach backendowych Rust. MoonZoon zapewnia również funkcję uwierzytelniania.
Dokumentacja MoonZoon nie jest obecnie hostowana. Aby użyć tego narzędzia, możesz sprawdzić pliki przecen w dokumenty folder za pośrednictwem projektu Repozytorium GitHub.
Być może wszedłeś w interakcję z WebAssembly
WebAssembly został po raz pierwszy wydany w 2017 roku, a konsorcjum World Wide Web Consortium (W3C) uczyniło WebAssembly standardem internetowym w 2019 roku. Od 2019 roku firmy takie jak Cloudflare, Google i Dropbox wykorzystują tę technologię w produkcji.
Google Earth używa WebAssembly, Cloudflare używa go do Cloudflare Workers, a Dropbox używa WebAssembly do kodeka w swojej witrynie.