WebAssembly (WASM) es un formato de código binario portátil de bajo nivel que se ejecuta en navegadores modernos, al igual que JavaScript. De hecho, WebAssembly también es interoperable con JavaScript. Puede transpilar la mayoría del código fuente del programa a WebAssembly y ejecutarlo en el navegador con o sin JavaScript.
Rust es rápido, lo que hace que el lenguaje sea una opción viable para crear programas WebAssembly. Hay muchas bibliotecas y marcos de Rust para ayudar, con soporte para las herramientas que usa para crear aplicaciones web.
1. La biblioteca del sicomoro
Sicomoro es un marco reactivo rápido, ergonómico e intuitivo similar a SolidJS. Puede usarlo para crear aplicaciones web en Rust que aprovechen el poder de WebAssembly. Sycamore proporciona la mayor parte de la funcionalidad que necesitará para crear una interfaz de aplicación web en Rust, por lo que no necesitará escribir JavaScript.
Sycamore también proporciona interoperabilidad de enrutador y JavaScript sobre Wasm-Bindgen usando JS-sys o Web-Sys. El proyecto tiene la intención de lanzar la funcionalidad de prueba y CSS pronto.
Para usar Sycamore, necesitará una versión reciente de Rust, la wasm32-desconocido-desconocido objetivo. También necesitará Trunk para compilar y empaquetar su aplicación. Dado que Sycamore es nuevo, será arriesgado usar la biblioteca principal en producción, excepto si recurre a una versión anterior.
2. El marco de tejo
Tejo es un marco Rust para crear aplicaciones web frontend multiproceso utilizando WebAssembly. Le permite escribir código Rust y transpilar su código Rust a WASM, que puede ejecutarse en cualquier dispositivo compatible con WASM. Yew es interoperable con JavaScript (puede usar su paquetes npm), y el marco proporciona una macro para interactuar con elementos HTML con Rust, como JSX en React.
Puede comenzar con Yew utilizando el paquete de aplicaciones Trunk o WASMPack. Consulte la documentación para saber cómo empezar, interactuar con HTML y API de DOM y transpila tu código Rust a WebAssembly.
El proyecto Yew es muy popular, con más de veinte mil estrellas en Github y cinco mil usuarios. Yew es estable, pero el proyecto no está listo para la producción y la base del código está cambiando, por lo que es posible que experimente errores y interrupciones.
3. La biblioteca de Percy
percy es una colección de bibliotecas de Rust para crear aplicaciones web frontend con tecnología de WebAssembly. Percy admite la representación instantánea del lado del servidor. El proyecto se destaca en la creación de aplicaciones de una sola página (SPA) compatibles con los motores de búsqueda.
Percy ofrece una html! macro para generar DOM virtuales. Puede convertirlos en elementos DOM en el frontend o usarlos para operaciones en el backend de su aplicación.
Percy es todavía muy nuevo y, aunque la biblioteca no está lista para la producción, el proyecto es muy popular, con más de dos mil estrellas en Github.
4. El marco de la semilla
Semilla es un marco alimentado por WebAssembly de pila completa y con baterías incluidas para crear aplicaciones web rápidas en Rust. El marco Seed proporciona un sistema de plantillas que utiliza una sintaxis macro en lugar de la sintaxis similar a JSX de Yew. También tiene un sistema de gestión de estado incorporado para mejorar la productividad.
La semilla es nueva y los componentes prefabricados, como los selectores de fechas, son raros. Aunque Seed actualmente no es compatible con la representación del lado del servidor, el proyecto tiene como objetivo incluirlo pronto. De lo contrario, Seed tiene funciones completas y puede crear aplicaciones web listas para producción con él. Seed también usa la arquitectura Elm con una configuración mínima. Puede crear y empaquetar sus aplicaciones utilizando Trunk, Web Bundler o Seeder.
También puede usar Seed para el backend de su aplicación web. Seed proporciona funcionalidad para crear API REST o GraphQL con soporte de enrutamiento y autenticación e integración AuthO.
LunaZoon es un marco compatible con WebAssembly, de pila completa y fácil de usar para aplicaciones front-end y back-end. Puede escribir Rust sin tener que escribir HTML, CSS y JavaScript en el frontend o REST, GraphQL o SQL en el backend. MoonZoon es rápido, simple, escalable y compatible con SEO. Proporciona una aplicación CLI para crear aplicaciones web fáciles de implementar.
La filosofía del proyecto MoonZoon es crear una herramienta muy simple sin terminología especial, barreras artificiales o dogma. Al usarlo, puede concentrarse en crear aplicaciones web como desee. Deberá tener instalado WASM-Pack para construir la interfaz. El backend de una aplicación MoonZoon se ejecuta en Actix-web y Warp, ambos populares marcos de backend de Rust. MoonZoon también proporciona funcionalidad de autenticación.
La documentación de MoonZoon no está alojada en este momento. Para usar la herramienta, puede consultar los archivos de rebajas en el documentos carpeta a través del proyecto repositorio GitHub.
Es posible que haya interactuado con WebAssembly
WebAssembly se lanzó por primera vez en 2017 y el World Wide Web Consortium (W3C) convirtió a WebAssembly en un estándar web en 2019. Desde 2019, empresas como Cloudflare, Google y Dropbox han utilizado la tecnología en producción.
Google Earth usa WebAssembly, Cloudflare lo usa para Cloudflare Workers y Dropbox usa WebAssembly para un códec en su sitio web.