Azumi - Live SSR for Rust
Наткнулся на фреймворк. Называется Azumi. Живёт на GitHub, звёзд почти нет. А жаль. Потому что штука интересная.
Вот смотри. Есть HTMX. Серверный HTML, никакого JavaScript. Просто, быстро, надёжно. Но есть беда. Каждый чих — запрос на сервер. Тоггл, диалог, «ты уверен?» — всё ждёт ответа. Даже если сервер быстрый, приложение ощущается медленным.
А есть React и Next.js. Интерактивность есть. Но ценой 1200 пакетов в node_modules. И переписывания каждые два года. React говорит: используй классы. Потом: нет, хуки. Потом: нет, серверные компоненты. Ты не владеешь архитектурой. Ты её арендуешь.
Azumi берёт лучшее от обоих.
Серверный HTML. SEO-friendly. Никакой гидратации. Никакого WASM. Но при этом — интерактивность без сетевых запросов. Тоггл работает мгновенно. Диалог открывается сразу. Счётчик обновляется до того, как сервер подтвердит.
Как это возможно. Вся интерактивность — это около 11 килобайт JavaScript, сжатого gzip. Один тег <script>. Ты этот JavaScript не пишешь. Он просто есть.
Компилятор ловит ошибки. Опечатался в CSS-классе — ошибка сборки. Забыл alt у картинки — ошибка сборки. Попытка вставить XSS — ошибка сборки. Целые категории багов просто не могут существовать в скомпилированном приложении Azumi.
Сам фреймворк строится на Axum. То есть если ты уже в экосистеме Rust, ты не прыгаешь в другой мир. Всё рядом.
Автор пишет: «Думай об этом как о HTMX, который реально работает для интерактивных приложений».
Но я его не применил
Хотел. Очень. Думал, вот оно — замена JavaScript, которая мне нужна. Это первый фреймворк на который я набрёл когда искал замену JS. AI пишет код, иногда даже собирался бинарь, но работало криво или не работало вовсе. Azumi его проверяет. Я проверяю поведение. Три уровня защиты. И всё это Rust.
Не вышло.
Не потому что фреймворк плохой. А потому что проект молодой. Его делает один автор. Документация тонкая. Примеров мало. Синтаксис неочевидный. Я не смог даже с AI разобраться, как его подключить к своему проекту. AI тоже тупил. Не потому что он глупый, а потому что информации мало. Не хватает примеров, не хватает объяснений, не хватает готовых решений.
Это не претензия к автору. Один человек не может написать фреймворк и документацию уровня Next.js одновременно. Это огромная работа. И то, что уже сделано, впечатляет.
Но факт остаётся фактом. Я не смог. Потратил на это большое количество времени, даже не считал сколько, не помню, но много.
Мало кто ищет
И вот что я понял.
Дело не только в Azumi. Дело в том, что сайты на Rust почти никто не делает. Ну, почти. Есть, конечно. Axum, Actix, Rocket. Проекты, библиотеки, фреймворки. Но если поставить рядом с PHP, JavaScript, Python — это капля в море.
PHP до сих пор крутит половину интернета. WordPress, Joomla, Drupal, самописные. Миллионы людей пишут на нём. JavaScript везде. От браузера до сервера. Python в каждом втором стартапе. Rust — где-то в уголке, для тех, кто знает, зачем пришёл.
И это объясняет одну вещь.
Дело не в том, что Azumi плохой. Дело в том, что такой инструмент мало кто ищет. Потому что мало кто вообще приходит в веб на Rust. Люди пишут на JS. На PHP. На Python. Они ищут фреймворки там. Next.js, Laravel, Django. У них есть выбор, есть конкуренция, есть хайп.
А в Rust вебе людей — единицы. И фреймворков тоже немного. И когда появляется новый, его замечают только те, кто уже в теме. А их мало. Значит, звёзд мало. Значит, документации мало. Значит, примеров мало.
Это не проблема Azumi. Это проблема ниши.
Замкнутый круг
Получается так. Мало людей в Rust вебе. Мало фреймворков. Мало тех, кто ищет новые. Автор делает хороший инструмент. Но о нём узнают десять человек. Из них пять попробуют. Из них два дойдут до конца. Из них один напишет что-то.
И всё. Инструмент живёт, но медленно. Развивается, но без толпы. Документация растёт, но со скоростью одного человека.
Это не вина автора. Один человек не может одновременно писать код, документацию, примеры, отвечать на вопросы и продвигать. Это работа на десятерых.
Я не соревнуюсь
И вот что хочу сказать. Я вообще не соревнуюсь с разработчиками.
Не пытаюсь доказать, что Rust лучше JavaScript. Не агитирую никого переходить. Не пишу «а вот на Rust было бы быстрее». Мне всё равно, кто там что использует.
Я просто делаю свой блог. На том, что выбрал. AI пишет код. Я проверяю поведение. Компилятор проверяет AI. И мне норм.
А то, что сообщество маленькое — это не моя проблема. И не проблема Azumi. Это просто факт. Мало людей. Мало инструментов. Мало тех, кто ищет.
Что дальше
Azumi я не забросил. Просто отложил.
Он молодой. Развивается. Документация будет расти. Примеры появятся. Может, через полгода, может, через год, но я вернусь. И внедрю точечно. Не весь проект переписывать. Взять один кусок, попробовать, посмотреть.
А пока я в меньшинстве. И мне это даже нравится. Потому что когда я что-то делаю на Rust, я знаю, что таких как я — единицы. Это не толпа. Это круг.
Дам ссылки: docs.rs | github.com | crates.io