🤩 Десктопные приложения на Go и веб технологиях — 8 июня 2026 г. в 05:26:58.174
🤩 Десктопные приложения на Go и веб технологиях Go хорошо показывает себя на бэкенде, но как только нужен графический интерфейс, выбор обычно невелик. Можно поднять локальный веб сервер и открыть его в браузере, можно взять Electron, который тащит за собой целый Chromium. Wails позволяет писать бэкенд на обычном Go, а интерфейс на любом знакомом стеке, будь то React, Vue, Svelte, Angular или чистый JavaScript. Методы Go доступны из JavaScript напрямую, без ручного описания протокола. Для структур и методов автоматически генерируются типы TypeScript, поэтому фронтенд видит сигнатуры функций. В комплекте идут нативные диалоги и меню, поддержка тёмной и светлой темы, эффекты прозрачности окна. Главное отличие от Electron в рендеринге. Wails использует системный движок WebView вместо вкомпиленного Chromium. За счёт этого бинарник весит единицы мегабайт, а не сотни. Как это работает Проверить окружение и зависимости помогает встроенная команда. Она подскажет, чего не хватает в системе: wails doctor Создаём проект из шаблона. Флаг -t задаёт фронтенд, флаг -n имя проекта: wails init -n myapp -t svelte Дальше работаем в режиме разработки с горячей перезагрузкой фронтенда: wails dev Финальная сборка под текущую платформу собирает один бинарник: wails build Теперь про связку Go и JavaScript. Любой метод структуры, привязанной к приложению, становится доступен фронтенду. Вот пример на Go: type App struct { ctx context.Context } func (a *App) Greet(name string) string { return fmt.Sprintf("Привет, %s!", name) } На стороне фронтенда Wails сам сгенерирует обёртку, и вызов выглядит как обычная асинхронная функция: import {Greet} from '../wailsjs/go/main/App' Greet("мир").then((result) => { console.log(result) }) Метод возвращает строку из Go, а JavaScript получает её через промис. Никакого ручного REST или WebSocket слоя писать не нужно. Если вы знакомы с веб фронтендом, порог входа низкий. Вы остаётесь в привычном стеке, а на выходе получаете лёгкое нативное приложение одним файлом. ➡️ Репозиторий

