Крабовые палочки и фронтенд

Вот и закончил очередной свой домашнй проект посвященный Rust, но теперь - в мире фронтенда.

https://github.com/geooooo/wap_rs

Аудиоплеер на Rust + Wasm + Leptos, хотелось бы еще приправить и обернуть это Tauri, но на текущем этапе и так проделана колосальная работа, тут даже эквалайзер живой и не бутофорный - анимациия основана на частотах текущей аудио дорожки.

А теперь пару мыслей по поводу dev experience во время разработки на таком весьма нестандартном стеке.

Wasm - переносимый формат байткода или своего рода ассемблер для браузеров и способ компилировать код с разных языков в него и отвязаться от велико-ужасного JavaScript. Потенциально wasm заметно быстрее JS.

По части сборки в Wasm у комьюнити Rust есть Trunk, а также низкоуровневые либы в лице web-sys, wasm-bindgen для доступа к браузерным api и интеропу с JS. Вообще есть и другие инструменты в экосистеме Rust.

Leptos - фреймворк для фронтенд разработки, помимо всего прочего он поддерживает SSR, но мой случай - чистый CSR. Leptos похож на React, есть довольно мощные шаблоны для верстки, опять же ближайшее сравненине - JSX, спасибо системе макросов в Rust, которая позволяет изобретать по сути DSL языки под разные случаи жизни.

Концепция “сигналов” чтобы триггерить рендеринг, функциональные компоненты, есть вспомогательные либы для Leptos с реализацией идей хуков - useЧтоНибудь, опять же знакомая вещь.

Довольно приятный dev experience - система типов Rust само собой дает по рукам каждый раз когда наделал ошибок, а когда все пофиксил - все быстро пересобралось и само перезагрузилось и единственные ошибки - логика кода или оставленный unwrap. Но по скорости разработки конечно несравнимо с опытом высокоуровневых языков вроде JS/TS и Dart, все же Rust - язык системного программирования, а еще писать некоторые обвязки на браузерные api было немного больно.

Оставил на потом Tauri - нечто похожее на Electron из мира JS (да, мы все пользуемся приложениями на Electron, даже если вы этого не замечали), но у него есть свои особенности.

Крабовые палочки и фронтенд | Сетка — социальная сеть от hh.ru