WebAssembly (WASM) er et bærbart binært kodeformat på lavt nivå som kjører på moderne nettlesere, akkurat som JavaScript gjør. Faktisk er WebAssembly også interoperabel med JavaScript. Du kan transpilere det meste av programkildekoden ned til WebAssembly og kjøre den på nettleseren med eller uten JavaScript.
Rust er rask, noe som gjør språket til et levedyktig alternativ for å bygge WebAssembly-programmer. Det er mange Rust-biblioteker og rammeverk for å hjelpe, med støtte for verktøyene du bruker til å bygge nettapper.
1. Sycamore-biblioteket
Sycamore er et raskt, ergonomisk og intuitivt SolidJS-lignende reaktivt rammeverk. Du kan bruke den til å bygge nettapplikasjoner i Rust som utnytter kraften til WebAssembly. Sycamore gir det meste av funksjonaliteten du trenger for å lage en nettapp-grensesnitt i Rust, så du trenger ikke å skrive JavaScript.
Sycamore tilbyr også en ruter og JavaScript-interoperabilitet over Wasm-Bindgen ved å bruke JS-sys eller Web-Sys. Prosjektet har til hensikt å lansere testing og CSS-funksjonalitet snart.
For å bruke Sycamore trenger du en nyere versjon av Rust—den wasm32-ukjent-ukjent mål. Du trenger også Trunk for å bygge og pakke applikasjonen din. Siden Sycamore er nytt, vil det være risikabelt å bruke hovedfilialbiblioteket i produksjon, bortsett fra hvis du tyr til en tidligere utgivelse.
2. The Yew Framework
Barlind er et Rust-rammeverk for å bygge multithreaded frontend-webapper ved hjelp av WebAssembly. Den lar deg skrive rustkode og transpilere rustkoden til WASM, som kan kjøres på alle enheter med WASM-støtte. Yew er interoperabel med JavaScript (du kan bruke din npm-pakker), og rammeverket gir en makro for å samhandle med HTML-elementer med Rust, som JSX i React.
Du kan komme i gang med Yew ved å bruke Trunk-applikasjonsbunteren eller WASMPack. Sjekk ut dokumentasjonen for hvordan du kommer i gang, samhandler med HTML og DOM APIer og transpiler Rust-koden til WebAssembly.
Yew-prosjektet er veldig populært, med over tjue tusen stjerner på Github og fem tusen brukere. Barlind er stabil, men prosjektet er ikke produksjonsklart, og kodebasen er i endring, så du kan oppleve feil og brudd.
3. Percy-biblioteket
Percy er en samling av Rust-biblioteker for å bygge frontend-webapper drevet av WebAssembly. Percy støtter umiddelbar gjengivelse på serversiden. Prosjektet utmerker seg ved å bygge søkemotorvennlige enkeltsideapplikasjoner (SPA).
Percy gir en html! makro for å generere virtuelle DOM-er. Du kan gjengi disse til DOM-elementer i frontend eller bruke dem til operasjoner i backend av applikasjonen din.
Percy er fortsatt veldig ny, og selv om biblioteket ikke er produksjonsklart, er prosjektet veldig populært, med over to tusen stjerner på Github.
4. Frørammeverket
Frø er et batteri-inkludert, fullstack WebAssembly-drevet rammeverk for å bygge raske nettapper i Rust. Seed-rammeverket gir et malsystem som bruker en makrosyntaks i stedet for Yews JSX-lignende syntaks. Den har også et innebygd styringssystem for å øke produktiviteten.
Seed er nytt, og forhåndsbygde komponenter som datoplukkere er sjeldne. Selv om Seed for øyeblikket ikke støtter gjengivelse på serversiden, har prosjektet som mål å inkludere det snart. Ellers er Seed funksjonskomplett, og du kan bygge produksjonsklare webapplikasjoner med det. Seed bruker også Elm-arkitekturen med minimal konfigurasjon. Du kan bygge og samle applikasjonene dine ved å bruke Trunk, Web Bundler eller Seeder.
Du kan også bruke Seed som bakenden av nettapplikasjonen din. Seed gir funksjonalitet for å bygge REST eller GraphQL APIer med støtte for ruting og autentisering og AuthO-integrasjon.
MoonZoon er et brukervennlig, fullstack, WebAssembly-støttet rammeverk for frontend- og backend-applikasjoner. Du kan skrive Rust uten å måtte skrive HTML, CSS og JavaScript på frontend eller REST, GraphQL eller SQL på backend. MoonZoon er rask, enkel, skalerbar og SEO-vennlig. Den gir en CLI-applikasjon for å bygge nettapper som er enkle å distribuere.
MoonZoon-prosjektets filosofi er å lage et veldig enkelt verktøy uten spesiell terminologi, kunstige barrierer eller dogmer. Ved å bruke den kan du fokusere på å bygge webapplikasjoner som du vil. Du må ha installert WASM-Pack for å bygge frontenden. Bakenden til en MoonZoon-applikasjon kjører på Actix-web og Warp, begge populære Rust-backend-rammeverk. MoonZoon gir også autentiseringsfunksjonalitet.
MoonZoon-dokumentasjonen er ikke vert for øyeblikket. For å bruke verktøyet kan du sjekke ut markdown-filene i dokumenter mappe via prosjektets GitHub-depot.
Du kan ha interagert med WebAssembly
WebAssembly ble først utgitt i 2017, og World Wide Web Consortium (W3C) gjorde WebAssembly til en nettstandard i 2019. Siden 2019 har selskaper som Cloudflare, Google og Dropbox brukt teknologien i produksjonen.
Google Earth bruker WebAssembly, Cloudflare bruker det for Cloudflare Workers, og Dropbox bruker WebAssembly for en kodek på nettstedet.