Aprendendo sobre Wails
Introdução
Ultimamente, venho testado um framework chamado wails.
Ele é similar ao Tauri e usa o webkit como motor padrão de renderização de interface.
E como backend ele tem a linguagem Go.
O que garante performance tanto em compilação quanto em execução.
Além de segurança de memória e umas firulinhas a mais.
Como funciona?
O app Wails é um aplicativo Go normal usando o frontend webkit como dito originalmente.
Mas as responsabilidade é dividida da seguinte forma:
O frontend é uma janela webkit (sem nenhuma carga de navegador por trás.) ela contém uma pequena parte de javascript para fazer bindings com o código go.
O aplicativo consiste principalmente em um função integrada chamada wails.Run()
.
Essa função recebe a configuração do aplicativo como:
- Tamanho da janela
- Título da janela
- Quais assets ele deve usar
Quais as vantagens e desvantagens com Wails
Vantagens
- Desempenho O wails oferece desempenho superior devido uso do Go para backend.
- Interface leve Utilizamos tecnologias web sem carregar um navegador como renderizador.
- Facilidade de desempenho Utilizamos Go para o backend e lógica de negócios
- Cross-platform Suporta múltiplas platformas incluindo MacOSX, Linux e Windows.
- Facilidade de configuração O setup initial é simples devido templates e ferramentas.
- Integração nativa ao go Como Wails é feito em go, podemos usar a std.
Desvantagens
- Suporte e comunidade menor Comparado a outros frameworks (tauri e electron). A comunidade Wails é menor dificultando o suporte a pequenos bugs.
- Recursos Embora seja uma opção para muitas necessidades. Ele ainda não oferece todos os recursos encontrados em alternativas (tauri / electron).
- Curva de aprendizado Para aqueles que não estão familiarizados com o Go. A curva de aprendizado pode ser um pouco mais alta comparado com outras linguagens.
- Documentação em expansão A documentação está em crescimento e pode ser considerada incompleta para iniciantes.
Comparando Wails com suas alternativas
Característica | Wails | Tauri | Electron |
---|---|---|---|
Linguagens de Backend | Go | Rust | Node.js (JavaScript/TypeScript) |
Linguagens de Frontend | HTML, CSS, JavaScript (Vue/React/Svelte) | HTML, CSS, JavaScript (React, Vue) | HTML, CSS, JavaScript |
Tamanho do Pacote | Menor, por ser mais otimizado | Menor que Electron | Maior, devido à dependência do Chromium |
Desempenho | Alto (Go no backend) | Alto (Rust no backend) | Moderado (Node.js + Chromium) |
Facilidade de Uso | Relativamente fácil para quem conhece Go | Fácil para desenvolvedores Rust e frontend web | Muito fácil, com grande documentação e comunidade |
Suporte a Múltiplas Plataformas | Windows, macOS, Linux | Windows, macOS, Linux | Windows, macOS, Linux |
Ecossistema e Comunidade | Menor, em crescimento | Moderado, mas crescente | Grande e madura, com muitos recursos |
Tamanho da Aplicação | Leve, mais eficiente | Leve, mais eficiente | Pesada, especialmente em apps grandes |
Suporte a APIs Nativas | Acesso direto com Go | Acesso direto com Rust | Acesso completo, mas com mais dependências externas |
Desenvolvimento Cross-platform | Sim | Sim | Sim |
Complexidade do Setup | Fácil de configurar | Simples, mas com mais configuração inicial | Simples, mas pode ser complexo para apps grandes |
Conclusão
O wails é uma alternativa interessante para quem não quer lidar com Rust ou electron.
Construindo apps nativos, multiplataforma com a performance do golang.
Se você estiver procurando uma solução mais leve e poderosa.
Pode valer a pena testar o Wails.