WebAssembly (WASM) — это переносимый низкоуровневый формат двоичного кода, который работает в современных браузерах, как и JavaScript. На самом деле WebAssembly также совместим с JavaScript. Вы можете перенести большую часть исходного кода программы в WebAssembly и запустить его в браузере с JavaScript или без него.

Rust работает быстро, что делает этот язык жизнеспособным вариантом для создания программ WebAssembly. Существует множество библиотек и фреймворков Rust с поддержкой инструментов, которые вы используете для создания веб-приложений.

1. Библиотека сикамор

Платан — это быстрая, эргономичная и интуитивно понятная реактивная среда, похожая на SolidJS. Вы можете использовать его для создания веб-приложений на Rust, использующих возможности WebAssembly. Sycamore предоставляет большую часть функций, которые вам понадобятся для создания внешнего интерфейса веб-приложения на Rust, поэтому вам не нужно писать JavaScript.

Sycamore также обеспечивает совместимость маршрутизатора и JavaScript с Wasm-Bindgen с использованием JS-sys или Web-Sys. В ближайшее время проект намерен выпустить тестирование и функциональность CSS.

Чтобы использовать Sycamore, вам понадобится последняя версия Rust — wasm32-неизвестно-неизвестно цель. Вам также понадобится Trunk для создания и объединения вашего приложения. Так как Sycamore является новым, будет рискованно использовать библиотеку основной ветки в продакшене, за исключением случаев, когда вы прибегаете к более раннему выпуску.

2. Тисовый каркас

Тис — это среда Rust для создания многопоточных веб-приложений с использованием WebAssembly. Это позволяет вам писать код Rust и транспилировать ваш код Rust в WASM, который может работать на любом устройстве с поддержкой WASM. Yew совместим с JavaScript (вы можете использовать свой пакеты нпм), а фреймворк предоставляет макрос для взаимодействия с элементами HTML в Rust, например JSX в React.

Вы можете начать работу с Yew, используя сборщик приложений Trunk или WASMPack. Ознакомьтесь с документацией о том, как начать работу, взаимодействовать с HTML и DOM-API и транспилируйте свой код Rust в WebAssembly.

Проект Yew очень популярен, у него более двадцати тысяч звезд на Github и пять тысяч пользователей. Yew стабилен, но проект не готов к работе, а кодовая база меняется, поэтому могут возникать ошибки и сбои.

3. Библиотека Перси

Перси представляет собой набор библиотек Rust для создания интерфейсных веб-приложений на базе WebAssembly. Percy поддерживает мгновенный рендеринг на стороне сервера. Проект отлично подходит для создания одностраничных приложений (SPA), удобных для поисковых систем.

Перси обеспечивает HTML! макрос для создания виртуальных DOM. Вы можете преобразовать их в элементы DOM во внешнем интерфейсе или использовать их для операций в бэкэнде вашего приложения.

Percy все еще очень новый, и хотя библиотека еще не готова к производству, проект очень популярен, набрав более двух тысяч звезд на Github.

4. Начальная структура

Семя — полнофункциональный фреймворк WebAssembly с батарейным питанием для создания быстрых веб-приложений на Rust. Платформа Seed предоставляет систему шаблонов, в которой используется синтаксис макросов вместо синтаксиса, подобного JSX в Yew. Он также имеет встроенную систему управления состоянием для повышения производительности.

Семя является новым, а готовые компоненты, такие как средства выбора даты, встречаются редко. Хотя Seed в настоящее время не поддерживает рендеринг на стороне сервера, проект планирует включить его в ближайшее время. В противном случае Seed является полнофункциональным, и с его помощью вы можете создавать готовые к работе веб-приложения. Seed также использует архитектуру Elm с минимальной конфигурацией. Вы можете создавать и связывать свои приложения с помощью Trunk, Web Bundler или Seeder.

Вы также можете использовать Seed для серверной части вашего веб-приложения. Seed предоставляет функциональные возможности для создания REST или GraphQL API с поддержкой маршрутизации и аутентификации и интеграцией AuthO.

МунЗун — это простая в использовании полнофункциональная платформа с поддержкой WebAssembly для внешних и внутренних приложений. Вы можете писать на Rust без необходимости писать HTML, CSS и JavaScript на интерфейсе или REST, GraphQL или SQL на сервере. MoonZoon быстрый, простой, масштабируемый и оптимизированный для SEO. Он предоставляет приложение CLI для создания веб-приложений, которые легко развернуть.

Философия проекта MoonZoon заключается в создании очень простого инструмента без специальной терминологии, искусственных барьеров или догм. Используя его, вы можете сосредоточиться на создании веб-приложений по своему усмотрению. Вам потребуется установить пакет WASM-Pack для создания внешнего интерфейса. Бэкенд приложения MoonZoon работает на Actix-web и Warp, популярных бэкенд-фреймворках Rust. MoonZoon также предоставляет функцию аутентификации.

Документация MoonZoon в данный момент не размещена. Чтобы использовать инструмент, вы можете проверить файлы уценки в документы папку через папку проекта Репозиторий GitHub.

Возможно, вы взаимодействовали с WebAssembly

WebAssembly был впервые выпущен в 2017 году, а Консорциум World Wide Web (W3C) сделал WebAssembly веб-стандартом в 2019 году. С 2019 года такие компании, как Cloudflare, Google и Dropbox, используют эту технологию в производстве.

Google Earth использует WebAssembly, Cloudflare использует его для Cloudflare Workers, а Dropbox использует WebAssembly в качестве кодека на своем веб-сайте.