WebAssembly (WASM) yra nešiojamas, žemo lygio dvejetainio kodo formatas, veikiantis šiuolaikinėse naršyklėse, kaip ir JavaScript. Tiesą sakant, „WebAssembly“ taip pat suderinama su „JavaScript“. Daugumą programos šaltinio kodo galite perkelti į WebAssembly ir paleisti jį naršyklėje su „JavaScript“ arba be jo.
Rust yra greitas, todėl kalba yra tinkama parinktis kuriant WebAssembly programas. Yra daug „Rust“ bibliotekų ir sistemų, kurios gali padėti, palaikančios žiniatinklio programoms kurti naudojamus įrankius.
1. Sycamore biblioteka
Plakanas yra greita, ergonomiška ir intuityvi SolidJS tipo reaktyvioji sistema. Galite naudoti jį kurdami žiniatinklio programas „Rust“, kurios išnaudoja „WebAssembly“ galią. „Sycamore“ suteikia daugumą funkcijų, kurių reikia norint sukurti žiniatinklio programos sąsają „Rust“, todėl jums nereikės rašyti „JavaScript“.
„Sycamore“ taip pat teikia maršrutizatoriaus ir „JavaScript“ sąveiką per „Wasm-Bindgen“, naudojant JS-sys arba Web-Sys. Projektas netrukus ketina išleisti testavimo ir CSS funkcijas.
Norėdami naudoti Sycamore, jums reikės naujausios Rust versijos wasm32-nežinomas-nežinomas taikinys. Norint sukurti ir sujungti programą, jums taip pat reikės „Trank“. Kadangi Sycamore yra nauja, bus rizikinga naudoti pagrindinę filialinę biblioteką gamyboje, nebent naudositės ankstesne versija.
2. Kukmedžio karkasas
Kukmedis yra „Rust“ sistema, skirta kurti kelių gijų sąsajų žiniatinklio programas naudojant „WebAssembly“. Tai leidžia rašyti Rust kodą ir perkelti Rust kodą į WASM, kuris gali veikti bet kuriame įrenginyje su WASM palaikymu. Yew yra suderinamas su JavaScript (galite naudoti savo npm paketai), o sistema suteikia makrokomandą, skirtą sąveikai su HTML elementais su Rust, pvz., JSX React.
Galite pradėti dirbti su Yew naudodami „Trunk“ programų rinktuvą arba WASMPack. Peržiūrėkite dokumentaciją, kaip pradėti, bendrauti su HTML ir DOM API ir perkelkite savo Rust kodą į WebAssembly.
„Yew“ projektas yra labai populiarus, „Github“ turi daugiau nei dvidešimt tūkstančių žvaigždžių ir penkis tūkstančius vartotojų. Yew yra stabilus, tačiau projektas neparengtas gamybai, keičiasi kodų bazė, todėl gali atsirasti klaidų ir lūžimų.
3. Percy biblioteka
Percy yra „Rust“ bibliotekų rinkinys, skirtas kurti priekinėms žiniatinklio programoms, kurias maitina „WebAssembly“. Percy palaiko momentinį serverio atvaizdavimą. Projektas puikiai tinka kuriant paieškos sistemoms pritaikytas vieno puslapio programas (SPA).
Percy pateikia an html! makrokomandą virtualiems DOM generuoti. Galite juos paversti DOM elementais priekinėje programoje arba naudoti juos operacijoms savo programos užpakalinėje dalyje.
Percy vis dar yra labai naujas ir, nors biblioteka dar nėra paruošta gamybai, projektas yra labai populiarus, Github'e yra daugiau nei du tūkstančiai žvaigždžių.
4. Sėklų sistema
Sėkla yra su baterijomis, pilna „WebAssembly“ maitinama sistema, skirta greitai kurti žiniatinklio programas „Rust“. „Seed“ sistema suteikia šablonų sistemą, kuri naudoja makro sintaksę, o ne „Yew“ JSX panašią sintaksę. Jame taip pat yra įmontuota valstybės valdymo sistema, skirta padidinti našumą.
Sėkla yra nauja, o iš anksto pagaminti komponentai, tokie kaip datos rinkikliai, yra reti. Nors „Seed“ šiuo metu nepalaiko serverio pusės atvaizdavimo, projektą ketinama greitai įtraukti. Kitu atveju „Seed“ yra visos funkcijos ir su ja galite kurti gamybai paruoštas žiniatinklio programas. Seed taip pat naudoja Elm architektūrą su minimalia konfigūracija. Galite kurti ir sujungti programas naudodami „Trunk“, „Web Bundler“ arba „Seeder“.
Taip pat galite naudoti „Seed“ savo žiniatinklio programos fone. Seed suteikia funkcionalumą kuriant REST arba GraphQL API su maršruto parinkimo ir autentifikavimo palaikymu bei AuthO integravimu.
MoonZoon yra paprasta naudoti, visa krūva, WebAssembly palaikoma sistema, skirta frontend ir backend programoms. Galite rašyti Rust nerašydami HTML, CSS ir JavaScript priekinėje sistemoje arba REST, GraphQL ar SQL užpakalinėje sistemoje. „MoonZoon“ yra greita, paprasta, keičiamo dydžio ir pritaikyta SEO. Tai suteikia CLI programą, skirtą lengvai įdiegti žiniatinklio programoms kurti.
MoonZoon projekto filosofija yra sukurti labai paprastą įrankį be specialios terminijos, dirbtinių kliūčių ar dogmų. Naudodami jį galite susitelkti ties žiniatinklio programų kūrimu, kaip norite. Norėdami sukurti priekinę dalį, turėsite įdiegti WASM-Pack. „MoonZoon“ programos užpakalinė dalis veikia „Actix-web“ ir „Warp“, abiejose populiariose „Rust“ foninėse sistemose. MoonZoon taip pat suteikia autentifikavimo funkciją.
MoonZoon dokumentacija šiuo metu nėra talpinama. Norėdami naudoti įrankį, galite peržiūrėti žymėjimo failus dok aplanką per projektą GitHub saugykla.
Galbūt bendravote su „WebAssembly“.
„WebAssembly“ pirmą kartą buvo išleista 2017 m., o „World Wide Web Consortium“ (W3C) padarė „WebAssembly“ žiniatinklio standartu 2019 m. Nuo 2019 m. tokios kompanijos kaip „Cloudflare“, „Google“ ir „Dropbox“ naudoja šią technologiją gamyboje.
„Google Earth“ naudoja WebAssembly, „Cloudflare“ naudoja ją „Cloudflare Workers“, o „Dropbox“ naudoja „WebAssembly“ savo svetainės kodekui.