Wails: a aposta do Golang em apps de nível desktop para superar o Electron
원제 · Wails: Golang's Bet On Desktop Grade Apps To Beat Electron
핵심 요약
O Wails oferece uma alternativa multiplataforma com pacotes leves de 52 megabytes e backend em Go, embora exija código nativo adicional em plataformas específicas devido a um ecossistema menos consolidado que o do Rust.
하이라이트
O arquivo executável do Wails possui 52 megabytes, enquanto o Tauri atinge 57 megabytes e o Electron chega a 324 megabytes.
A inicialização a frio registra 2.337 milissegundos para o Wails, 2.049 milissegundos para o Tauri e 1.890 milissegundos para o Electron.
O Wails utiliza o motor de renderização nativo de cada plataforma em vez de embutir um navegador.
Alterações realizadas em arquivos Go atualizam de forma automática as definições do TypeScript durante o uso do comando wails dev.
A ausência de bibliotecas prontas em Go exigiu a escrita de 450 linhas de código Objective-C para acessar o ScreenCaptureKit no macOS.
타임라인
Arquitetura e Funcionamento do Wails
O desenvolvimento de aplicações desktop de alto nível ocorre por meio da integração entre Go e uma interface web. O motor nativo evita a duplicação de componentes de navegação pesados, alinhando a arquitetura proposta ao modelo utilizado pelo Tauri, mas com a linguagem Go no lugar de Rust.
- O Wails permite criar aplicativos desktop utilizando Golang no backend e tecnologias web na webview.
- A ferramenta reutiliza o motor de renderização nativo de cada sistema operacional.
- O pacote final dispensa o empacotamento de um navegador completo.
Estrutura do Projeto e Sincronização de Código
A organização do projeto lembra o padrão observado no Electron, contendo configurações de janela e metadados diretamente no código principal. Modificações em funções do backend refletem instantaneamente nas definições de tipo consumidas pelo React, agilizando o ciclo de desenvolvimento.
- A estrutura de diretórios separa os arquivos de front-end em pastas específicas e mantém o código de entrada na função main.go.
- O ambiente gera automaticamente as funções de API em TypeScript a partir do código backend.
- O comando wails dev recompila e recarrega o aplicativo de forma automática após alterações no código Go.
Comparativo de Desempenho e Recursos
A ausência do Chromium empacotado reduz drasticamente o volume do instalador e o consumo de recursos. A captura de tela via ScreenCaptureKit nativo no macOS elimina gargalos de processamento presentes em abordagens baseadas inteiramente na webview.
- O tamanho do arquivo gerado pelo Wails fica em 52 megabytes, comparado aos 57 megabytes do Tauri e 324 megabytes do Electron.
- A inicialização a frio registra 2.337 milissegundos no Wails, superando os 2.049 milissegundos do Tauri e 1.890 milissegundos do Electron.
- O desempenho na gravação de tela supera o Electron ao utilizar APIs nativas do sistema operacional sem tráfego excessivo pela bridge.
Experiência de Desenvolvimento e Integração Nativa
A escolha entre Wails e Tauri depende da preferência pessoal pela linguagem de programação, embora o ecossistema de crates em Rust ofereça integrações nativas mais diretas. O Wails compensa essa defasagem permitindo o uso de código C e Objective-C diretamente por meio de mecanismos embutidos.
- A ausência de bibliotecas dedicadas em Go exigiu a escrita de 450 linhas de código Objective-C para integrar o ScreenCaptureKit.
- O recurso Cgo do Go viabiliza a vinculação direta com frameworks nativos da Apple.
- O ecossistema do Rust oferece melhor suporte pronto para uso em comparação ao ecossistema atual de Go para desktop.
설명
You already write Go, so why bundle a whole Chromium to ship a desktop app? Wails builds cross-platform desktop apps on the system webview, 52 MB against Electron's 324. The catch is the developer experience: where Tauri leans on Rust crates, Go can leave you hand-writing Objective-C. Worth it if you're choosing a desktop stack. 🔗 Relevant Links https://wails.io https://github.com/wailsapp/wails ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters: 0:00 What is Wails? 0:33 How Wails works (Go + native webview) 1:06 Demo: the screen recorder app 1:29 Project structure: main.go and the frontend 1:57 React frontend and auto-generated bindings 2:50 Live reload with wails dev 3:24 Bundle size: Wails vs Tauri vs Electron 4:07 Startup time 4:36 Runtime performance 5:07 Developer experience 5:37 Writing Objective-C with CGo 6:07 Verdict: Wails or Tauri? 6:40 Outro
