TGViewer
Библиотека Go-разработчика | Golang Библиотека Go-разработчика | Golang @goproglib · 24.1K subscribers
Post #7237 3.13K
🤩 Десктопные приложения на 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 слоя писать не нужно.

Если вы знакомы с веб фронтендом, порог входа низкий. Вы остаётесь в привычном стеке, а на выходе получаете лёгкое нативное приложение одним файлом.

➡️ Репозиторий

📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max

🐸 Библиотека Go-разработчика

#GoToProduction
  • 👍 16
  • ❤ 2
  • 👾 1
More from @goproglib
  1. Sep 30, 2026🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации A…
  2. Sep 29, 2026👨‍💻 Библиотека для написания LSP-серверов Написать свой Language Server с нуля на Go сло…
  3. Sep 28, 2026🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true /…
  4. Sep 28, 2026👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работае…
  5. Sep 26, 2026🔥 В Go 1.27 появился portable SIMD До этого SIMD-оптимизации в Go требовали архитектурног…
  6. Sep 25, 2026🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →