WebAssembly (WASM) je prenosna nizkonivojska oblika binarne kode, ki deluje v sodobnih brskalnikih, tako kot JavaScript. Pravzaprav je WebAssembly tudi interoperabilen z JavaScriptom. Večino izvorne kode programa lahko prevedete v WebAssembly in jo zaženete v brskalniku z ali brez JavaScripta.
Rust je hiter, zaradi česar je jezik izvedljiva možnost za izdelavo programov WebAssembly. V pomoč je veliko knjižnic in ogrodij Rust s podporo za orodja, ki jih uporabljate za izdelavo spletnih aplikacij.
1. Knjižnica Sycamore
Sycamore je hitro, ergonomsko in intuitivno reaktivno ogrodje, podobno SolidJS. Uporabite ga lahko za izdelavo spletnih aplikacij v Rustu, ki izkoriščajo moč WebAssembly. Sycamore ponuja večino funkcionalnosti, ki jih boste potrebovali za ustvarjanje vmesnika spletne aplikacije v Rustu, tako da vam ne bo treba pisati JavaScripta.
Sycamore ponuja tudi usmerjevalnik in interoperabilnost JavaScript prek Wasm-Bindgen z uporabo JS-sys ali Web-Sys. Projekt namerava kmalu objaviti funkcionalnost testiranja in CSS.
Če želite uporabljati Sycamore, potrebujete najnovejšo različico Rust-the wasm32-neznano-neznano tarča. Potrebovali boste tudi Trunk za gradnjo in združevanje svoje aplikacije. Ker je Sycamore nov, bo tvegano uporabljati knjižnico glavne veje v proizvodnji, razen če se zatečete k zgodnejši izdaji.
2. Tisov okvir
Tisa je ogrodje Rust za gradnjo večnitnih čelnih spletnih aplikacij z uporabo WebAssembly. Omogoča vam pisanje kode Rust in prevajanje kode Rust v WASM, ki se lahko izvaja na kateri koli napravi s podporo za WASM. Yew je interoperabilen z JavaScriptom (lahko uporabite svoj paketi npm), ogrodje pa nudi makro za interakcijo z elementi HTML z Rust, kot je JSX v Reactu.
Z Yewom lahko začnete z združevanjem aplikacij Trunk ali WASMPack. Oglejte si dokumentacijo, kako začeti, komunicirati s HTML in API-ji DOM in prenesite kodo Rust v WebAssembly.
Projekt Yew je zelo priljubljen, saj ima na Githubu več kot dvajset tisoč zvezdic in pet tisoč uporabnikov. Yew je stabilen, vendar projekt ni pripravljen za produkcijo, baza kode pa se spreminja, zato lahko pride do napak in prekinitev.
3. Knjižnica Percy
Percy je zbirka knjižnic Rust za gradnjo čelnih spletnih aplikacij, ki jih poganja WebAssembly. Percy podpira takojšnje upodabljanje na strani strežnika. Projekt je odličen pri gradnji iskalniku prijaznih enostranskih aplikacij (SPA).
Percy zagotavlja html! makro za generiranje virtualnih DOM-ov. Te lahko upodobite v elemente DOM v sprednjem delu ali jih uporabite za operacije v zadnjem delu vaše aplikacije.
Percy je še vedno zelo nov in čeprav knjižnica še ni pripravljena za proizvodnjo, je projekt zelo priljubljen, z več kot dva tisoč zvezdicami na Githubu.
4. Seed Framework
Seme je baterijsko ogrodje s polnim skladom, ki ga poganja WebAssembly, za izdelavo hitrih spletnih aplikacij v Rustu. Ogrodje Seed zagotavlja sistem predlog, ki uporablja sintakso makra namesto sintakse, podobne Yewu JSX. Ima tudi vgrajen sistem upravljanja stanja za povečanje produktivnosti.
Seme je novo in vnaprej zgrajene komponente, kot so pobiralci datumov, so redke. Čeprav Seed trenutno ne podpira upodabljanja na strani strežnika, ga projekt namerava kmalu vključiti. V nasprotnem primeru ima Seed popolne funkcije in z njim lahko sestavite spletne aplikacije, pripravljene za proizvodnjo. Seed uporablja tudi arhitekturo Elm z minimalno konfiguracijo. Svoje aplikacije lahko sestavite in združite v pakete z uporabo Trunk, Web Bundler ali Seeder.
Seed lahko uporabite tudi za zaledje vaše spletne aplikacije. Seed zagotavlja funkcionalnost za gradnjo API-jev REST ali GraphQL s podporo za usmerjanje in preverjanje pristnosti ter integracijo AuthO.
MoonZoon je ogrodje, ki je preprosto za uporabo in s polnim skladom podpira WebAssembly, za čelne in zaledne aplikacije. Rust lahko pišete, ne da bi vam bilo treba pisati HTML, CSS in JavaScript na frontend ali REST, GraphQL ali SQL na backend. MoonZoon je hiter, preprost, razširljiv in SEO prijazen. Zagotavlja aplikacijo CLI za izdelavo spletnih aplikacij, ki jih je enostavno uvesti.
Filozofija projekta MoonZoon je ustvariti zelo preprosto orodje brez posebne terminologije, umetnih ovir ali dogme. Z njegovo uporabo se lahko osredotočite na izdelavo spletnih aplikacij, kot želite. Za izdelavo sprednjega dela boste morali imeti nameščen WASM-Pack. Zaledje aplikacije MoonZoon deluje na Actix-web in Warp, obeh priljubljenih zalednih okvirih Rust. MoonZoon nudi tudi funkcijo preverjanja pristnosti.
Dokumentacija MoonZoon trenutno ne gostuje. Če želite uporabiti orodje, si lahko ogledate datoteke označevanja v dokumenti mapo prek projekta Repozitorij GitHub.
Morda ste sodelovali z WebAssembly
WebAssembly je bil prvič izdan leta 2017, World Wide Web Consortium (W3C) pa je WebAssembly leta 2019 naredil za spletni standard. Od leta 2019 podjetja, kot so Cloudflare, Google in Dropbox, uporabljajo tehnologijo v proizvodnji.
Google Earth uporablja WebAssembly, Cloudflare ga uporablja za Cloudflare Workers, Dropbox pa uporablja WebAssembly za kodek na svojem spletnem mestu.