WebAssembly (WASM) ist ein portables Low-Level-Binärcodeformat, das auf modernen Browsern läuft, genau wie JavaScript. Tatsächlich ist WebAssembly auch mit JavaScript interoperabel. Sie können den meisten Programmquellcode nach unten in WebAssembly transpilieren und im Browser mit oder ohne JavaScript ausführen.
Rust ist schnell, was die Sprache zu einer praktikablen Option zum Erstellen von WebAssembly-Programmen macht. Es gibt viele Rust-Bibliotheken und Frameworks, die Ihnen helfen, mit Unterstützung für die Tools, die Sie zum Erstellen von Web-Apps verwenden.
1. Die Sycamore-Bibliothek
Bergahorn ist ein schnelles, ergonomisches und intuitives SolidJS-ähnliches reaktives Framework. Sie können es verwenden, um Webanwendungen in Rust zu erstellen, die die Leistungsfähigkeit von WebAssembly nutzen. Sycamore bietet die meisten Funktionen, die Sie zum Erstellen eines Web-App-Frontends in Rust benötigen, sodass Sie kein JavaScript schreiben müssen.
Sycamore bietet auch eine Router- und JavaScript-Interoperabilität über Wasm-Bindgen mit JS-sys oder Web-Sys. Das Projekt beabsichtigt, bald Test- und CSS-Funktionalität zu veröffentlichen.
Um Sycamore verwenden zu können, benötigen Sie eine aktuelle Version von Rust – die wasm32-unbekannt-unbekannt Ziel. Außerdem benötigen Sie Trunk, um Ihre Anwendung zu erstellen und zu bündeln. Da Sycamore neu ist, ist es riskant, die Hauptzweigbibliothek in der Produktion zu verwenden, es sei denn, Sie greifen auf eine frühere Version zurück.
2. Das Eibengerüst
Eibe ist ein Rust-Framework zum Erstellen von Multithread-Frontend-Web-Apps mit WebAssembly. Es ermöglicht Ihnen, Rust-Code zu schreiben und Ihren Rust-Code in WASM zu transpilieren, das auf jedem Gerät mit WASM-Unterstützung ausgeführt werden kann. Yew ist mit JavaScript interoperabel (Sie können Ihre npm-Pakete) und das Framework bietet ein Makro für die Interaktion mit HTML-Elementen mit Rust, wie JSX in React.
Sie können mit Yew beginnen, indem Sie den Trunk-Anwendungsbundler oder WASMPack verwenden. In der Dokumentation erfahren Sie, wie Sie beginnen, mit HTML interagieren und DOM-APIs und transpilieren Sie Ihren Rust-Code in WebAssembly.
Das Yew-Projekt ist sehr beliebt, mit über zwanzigtausend Sternen auf Github und fünftausend Benutzern. Yew ist stabil, aber das Projekt ist noch nicht produktionsbereit, und die Codebasis ändert sich, sodass Fehler und Unterbrechungen auftreten können.
3. Die Percy-Bibliothek
Percy ist eine Sammlung von Rust-Bibliotheken zum Erstellen von Frontend-Web-Apps, die von WebAssembly unterstützt werden. Percy unterstützt sofortiges serverseitiges Rendern. Das Projekt zeichnet sich durch den Aufbau suchmaschinenfreundlicher Single-Page-Anwendungen (SPAs) aus.
Percy bietet eine HTML! Makro zum Generieren virtueller DOMs. Sie können diese im Frontend in DOM-Elemente rendern oder für Operationen im Backend Ihrer Anwendung verwenden.
Percy ist noch sehr neu, und obwohl die Bibliothek noch nicht produktionsreif ist, ist das Projekt mit über zweitausend Sternen auf Github sehr beliebt.
4. Das Seed-Framework
Samen ist ein batteriebetriebenes Full-Stack-WebAssembly-basiertes Framework zum Erstellen schneller Web-Apps in Rust. Das Seed-Framework stellt ein Vorlagensystem bereit, das eine Makrosyntax anstelle der JSX-ähnlichen Syntax von Yew verwendet. Es verfügt auch über ein integriertes Zustandsverwaltungssystem zur Steigerung der Produktivität.
Seed ist neu und vorgefertigte Komponenten wie Dattelpflücker sind selten. Obwohl Seed derzeit kein serverseitiges Rendering unterstützt, soll das Projekt es bald einbeziehen. Ansonsten ist Seed funktionskomplett und Sie können damit produktionsreife Webanwendungen erstellen. Seed verwendet auch die Elm-Architektur mit minimaler Konfiguration. Sie können Ihre Anwendungen mit Trunk, Web Bundler oder Seeder erstellen und bündeln.
Sie können Seed auch für das Backend Ihrer Webanwendung verwenden. Seed bietet Funktionen zum Erstellen von REST- oder GraphQL-APIs mit Routing- und Authentifizierungsunterstützung und AuthO-Integration.
MondZoon ist ein benutzerfreundliches Full-Stack-Framework mit WebAssembly-Unterstützung für Frontend- und Backend-Anwendungen. Sie können Rust schreiben, ohne HTML, CSS und JavaScript im Frontend oder REST, GraphQL oder SQL im Backend schreiben zu müssen. MoonZoon ist schnell, einfach, skalierbar und SEO-freundlich. Es bietet eine CLI-Anwendung zum Erstellen von Web-Apps, die einfach bereitzustellen sind.
Die Philosophie des MoonZoon-Projekts besteht darin, ein sehr einfaches Werkzeug ohne spezielle Terminologie, künstliche Barrieren oder Dogmen zu erstellen. Damit können Sie sich nach Belieben auf die Erstellung von Webanwendungen konzentrieren. Sie müssen WASM-Pack installiert haben, um das Frontend zu erstellen. Das Backend einer MoonZoon-Anwendung läuft auf Actix-web und Warp, beides beliebte Rust-Backend-Frameworks. MoonZoon bietet auch Authentifizierungsfunktionen.
Die MoonZoon-Dokumentation wird derzeit nicht gehostet. Um das Tool zu verwenden, können Sie die Markdown-Dateien im auschecken Dokumente Ordner über das Projekt GitHub-Repository.
Möglicherweise haben Sie mit WebAssembly interagiert
WebAssembly wurde erstmals 2017 veröffentlicht, und das World Wide Web Consortium (W3C) machte WebAssembly 2019 zu einem Webstandard. Seit 2019 nutzen Unternehmen wie Cloudflare, Google und Dropbox die Technologie in der Produktion.
Google Earth verwendet WebAssembly, Cloudflare verwendet es für Cloudflare Workers und Dropbox verwendet WebAssembly für einen Codec auf seiner Website.