Наткнулся вчера на один инструмент — go-app. Он позволяет писать сайты на языке Go, причём сразу с PWA режимом.
Серверную часть предлагается разворачивать на go-пакете net/http, а весь UI пишется на кастомных абстракциях на Go, которые собираются в общий бинарник WebAssembly.
Никаких реактов, никаких vue, не придётся даже тэг <div> использовать))
Вместо этого придётся писать как-нибудь так:
type hello struct {
app.Compo
Name string
}
func (h *hello) Render() app.UI {
return app.Div().Text("Hello, " + h.Name)
}
Получается, HTML здесь особо не нужен.. но нужно знать Go)
Хорошо, что есть PWA режим
Проблема в том, что готовый бинарник будет довольно большим — даже тяжелее сборки create-react-app)) Поэтому в go-app сразу поставляется Service Worker, который хотя бы поможет с кэшированием этого огромного артефакта.
Примеры
На go-app написан lofimusic.app — простой сайт для прослушивания lofi-музыки. Заходим во вкладку Network и смотрим на размер файла app.wasm… 15.6 Мб))
Другой пример, murlok.io — сайт с актуальными наборами талантов для World of Warcraft, и этот сайт почти всегда открыт у меня в фоне, пока запущена игра. Я заметил, что из-за этого сайта падает FPS в самом WoW. А если сайт закрыть — с производительностью становится всё ок.
Вот так я и узнал про go-app — когда заглянул в девтулз с целью разобраться, почему игра тормозит))
Сама сборка этого сайта весит всего 3мб, кстати, что уже лучше. Но, видимо, причина кроется либо где-то внутри реализации go-app, либо в исходниках конкретно этого сайта. Правда, в открытом доступе исходников самого сайта я не нашёл.
Есть адепты Go в этом чате?) Как вам инструмент?)
Или, может, кто-нибудь сам захотел стать адептом Go? Лично я — да) Надо же понять, почему вов тормозит.