WebAssembly (WASM) är ett bärbart binärt kodformat på låg nivå som körs på moderna webbläsare, precis som JavaScript gör. WebAssembly är faktiskt också interoperabelt med JavaScript. Du kan överföra de flesta programkällkoder till WebAssembly och köra den i webbläsaren med eller utan JavaScript.
Rust är snabb, vilket gör språket till ett gångbart alternativ för att bygga WebAssembly-program. Det finns många Rust-bibliotek och ramverk till hjälp, med stöd för de verktyg du använder för att bygga webbappar.
1. Sycamorebiblioteket
Platan är ett snabbt, ergonomiskt och intuitivt SolidJS-liknande reaktivt ramverk. Du kan använda den för att bygga webbapplikationer i Rust som utnyttjar kraften i WebAssembly. Sycamore tillhandahåller de flesta funktioner du behöver för att skapa ett webbappgränssnitt i Rust, så du behöver inte skriva JavaScript.
Sycamore tillhandahåller också en router och JavaScript-kompatibilitet över Wasm-Bindgen med JS-sys eller Web-Sys. Projektet avser att snart släppa test- och CSS-funktionalitet.
För att använda Sycamore behöver du en ny version av Rust—the wasm32-okänt-okänd mål. Du behöver också Trunk för att bygga och paketera din applikation. Eftersom Sycamore är nytt kommer det att vara riskabelt att använda huvudfilialbiblioteket i produktionen, förutom om du tar till en tidigare version.
2. Idegransramen
Idegran är ett Rust-ramverk för att bygga flertrådade frontend-webbappar med hjälp av WebAssembly. Den låter dig skriva rostkod och transpilera din rostkod till WASM, som kan köras på alla enheter med WASM-stöd. Yew är interoperabel med JavaScript (du kan använda din npm-paket), och ramverket tillhandahåller ett makro för att interagera med HTML-element med Rust, som JSX i React.
Du kan komma igång med Yew med hjälp av Trunk-applikationsbuntaren eller WASMPack. Kolla in dokumentationen för hur du kommer igång, interagerar med HTML och DOM API: er och transpilera din Rust-kod till WebAssembly.
Yew-projektet är mycket populärt, med över tjugo tusen stjärnor på Github och fem tusen användare. Yew är stabil, men projektet är inte produktionsfärdigt och kodbasen förändras, så du kan uppleva fel och avbrott.
3. Percybiblioteket
Percy är en samling Rust-bibliotek för att bygga frontend-webbappar som drivs av WebAssembly. Percy stöder omedelbar rendering på serversidan. Projektet utmärker sig på att bygga sökmotorvänliga ensidiga applikationer (SPA).
Percy ger en html! makro för att generera virtuella DOM. Du kan rendera dessa till DOM-element i frontend eller använda dem för operationer i backend av din applikation.
Percy är fortfarande väldigt ny, och även om biblioteket inte är produktionsfärdigt är projektet väldigt populärt, med över tvåtusen stjärnor på Github.
4. Fröramverket
Utsäde är ett batteri-inkluderat, full-stack WebAssembly-drivet ramverk för att bygga snabba webbappar i Rust. Seed-ramverket tillhandahåller ett mallsystem som använder en makrosyntax istället för Yews JSX-liknande syntax. Den har också ett inbyggt tillståndshanteringssystem för att öka produktiviteten.
Seed är nytt, och förbyggda komponenter som datumplockare är sällsynta. Även om Seed för närvarande inte stöder rendering på serversidan, siktar projektet på att inkludera det snart. Annars är Seed funktionskomplett, och du kan bygga produktionsfärdiga webbapplikationer med det. Seed använder också Elm-arkitekturen med minimal konfiguration. Du kan bygga och bunta ihop dina applikationer med hjälp av Trunk, Web Bundler eller Seeder.
Du kan också använda Seed som backend av din webbapplikation. Seed tillhandahåller funktionalitet för att bygga REST- eller GraphQL-API: er med stöd för routing och autentisering och AuthO-integration.
MoonZoon är en lättanvänd, fullstack, WebAssembly-stödd ram för frontend- och backend-applikationer. Du kan skriva Rust utan att behöva skriva HTML, CSS och JavaScript på frontend eller REST, GraphQL eller SQL på backend. MoonZoon är snabb, enkel, skalbar och SEO-vänlig. Den tillhandahåller en CLI-applikation för att bygga webbappar som är enkla att distribuera.
MoonZoon-projektets filosofi är att skapa ett mycket enkelt verktyg utan speciell terminologi, konstgjorda barriärer eller dogmer. Med hjälp av det kan du fokusera på att bygga webbapplikationer som du vill. Du måste ha WASM-Pack installerat för att bygga fronten. Backend av en MoonZoon-applikation körs på Actix-web och Warp, båda populära Rust-backend-ramverk. MoonZoon tillhandahåller också autentiseringsfunktioner.
MoonZoon-dokumentationen är inte värd för tillfället. För att använda verktyget kan du kolla in markdown-filerna i docs mapp via projektets GitHub-förråd.
Du kan ha interagerat med WebAssembly
WebAssembly släpptes först 2017, och World Wide Web Consortium (W3C) gjorde WebAssembly till en webbstandard 2019. Sedan 2019 har företag som Cloudflare, Google och Dropbox använt tekniken i produktionen.
Google Earth använder WebAssembly, Cloudflare använder det för Cloudflare Workers och Dropbox använder WebAssembly för en codec på sin webbplats.