Tauri vs. Electron: Qual é a melhor estrutura multiplataforma para aplicativos de desktop?

Tauri vs. Electron: Qual é a melhor estrutura multiplataforma para aplicativos de desktop?

Se há uma coisa em que os desenvolvedores concordam sobre aplicativos multiplataforma, é que é mais fácil criar uma GUI com HTML, CSS e JavaScript do que usar uma das muitas estruturas multiplataforma disponíveis. Estruturas como Electron oferecem o melhor dos dois mundos. Você pode escrever seu aplicativo em JavaScript ou talvez outra linguagem, e usar HTML em um navegador da web como a GUI do aplicativo. teste

Embora o Electron possa ser o mais conhecido, ele não é o único framework desse tipo. Entra o Tauri, um framework na mesma linha do Electron. É um projeto mais novo e, consequentemente, menos estabelecido, mas o Tauri tem grandes diferenças arquitetônicas por baixo dos panos. Em alguns aspectos importantes, os projetos do Tauri são mais compactos, mais voltados para o futuro e mais poderosos e flexíveis do que os projetos desenvolvidos no Electron.

Vamos analisar as duas estruturas lado a lado e ver como elas se comparam.

Como funciona o Electron

Há uma boa chance de você estar lendo este artigo por meio da tecnologia principal da Electron: um navegador da web.

Electron, originalmente desenvolvido pelo GitHub, depende de alguns projetos-chave de navegadores da web: Chromium, os fundamentos do Google Chrome e do Microsoft Edge; e o tempo de execução JavaScript do Node.js (e Google V8). Um projeto Electron reempacota o que equivale a uma instância portátil de um navegador da web com tecnologia Chromium junto com o código do aplicativo. Quando o aplicativo é iniciado, ele inicia o navegador, que por sua vez carrega o aplicativo baseado em JavaScript empacotado com ele.

Tudo o que é possível em um navegador da web é possível em um aplicativo Electron. Na verdade, os aplicativos Electron podem fazer mais, já que os bits do navegador empacotados têm permissão para trabalhar com o sistema local de maneiras que um aplicativo convencional baseado em navegador (como um aplicativo da web progressivo) não pode.

Um grande número de aplicativos populares usa Electron. O Visual Studio Code, o editor de texto e IDE configurável, é um exemplo. O aplicativo de mensagens Discord, o programa de anotações Obsidian, Docker Desktop, GitHub Desktop Slack e Basecamp 3 também são aplicativos Electron.

Alguns exemplos do Electron são mais... bem, infames. O Microsoft Teams, por exemplo, é amplamente criticado por ser um aplicativo Electron, embora tenha sido drasticamente melhorado em compilações recentes.

Uma crítica comum (e totalmente correta) aos aplicativos baseados em Electron é sua pegada. Um aplicativo Electron vem com sua própria cópia exclusiva e vendida de um navegador da web e precisa executar um processo de navegador da web totalmente separado quando é iniciado. Os aplicativos Electron podem ocupar centenas de megabytes ou mais no disco, e sua pegada na memória também costuma ser grande. E embora o hardware moderno geralmente consiga lidar com a carga, surge uma questão maior: não há uma maneira melhor de fazer isso?

Como funciona o Tauri

A ideia básica por trás do projeto Tauri, escrito em Rust, é similar ao Electron. Você escreve um aplicativo cuja UI é uma página da web, e você agrupa esse aplicativo para que ele rode por meio de um navegador da web autocontido.

A grande diferença do Tauri é que ele não agrupa um navegador inteiro. O Tauri, em vez disso, usa o componente webview do sistema nativo para qualquer sistema operacional em que seu aplicativo seja executado. Os aplicativos podem ser entregues em pacotes tão pequenos quanto alguns megabytes. O pacote Tauri usa WRY para falar com a visualização da web nativa e taopara gerenciamento de janelas e interface com coisas como a bandeja do sistema e outros recursos.

Você também pode usar quase qualquer framework HTML/CSS/JS, e o Tauri tem suporte nativo para uma série de frameworks populares: Vue.js, Svelte, React, SolidJS, Angular, Preact, Yew, Leptos e Sycamore. E você pode migrar um projeto web existente para o backend do Tauri.

Uma possível desvantagem do Tauri é que você precisa de pelo menos alguma experiência com Rust. A parte de back-end ou "lado do servidor" do aplicativo é escrita em Rust, e o pacote inteiro é compilado e entregue como um executável Rust autônomo.

Você pode escrever seu aplicativo inteiro como um aplicativo JavaScript do lado do cliente, mas isso limitará muito sua funcionalidade. E é possível usar outros tempos de execução ou linguagens além do Rust para o backend — Python, por exemplo — mas o viés é fortemente pró-Rust.

Se você ainda não está muito familiarizado com a linguagem, os aplicativos de exemplo no repositório Tauri são um bom lugar para obter uma base maior com Rust e também para ver como conceitos específicos podem ser executados (como um aplicativo com uma tela inicial na inicialização).

Ao contrário do Electron, não há muitos aplicativos de desktop convencionais criados com Tauri, pelo menos, ainda não. Parte disso pode ser devido à presença legada do Electron, ou à relativa complexidade do Rust versus JavaScript. Mas um bom número de aplicativos, tanto comerciais quanto de código aberto, foram escritos com Tauri. O cliente GUI pgMagic para PostgreSQL, a ferramenta de transferência de arquivos Payload e o aplicativo de bate-papo da equipe Noor são exemplos.

Qual é melhor: Tauri ou Electron?

No momento, o Electron continua sendo o mais proeminente e bem compreendido dos frameworks de UI multiplataforma. Apesar de todas as críticas levantadas contra ele, ele ainda é uma escolha padrão popular para entregar aplicativos multiplataforma com boa integração de sistema e uma GUI rica. Mas reclamações sobre o consumo de memória do Electron e o tamanho de seus binários são válidas, e não vão embora tão cedo. Elas estão intimamente ligadas ao design dos aplicativos Electron, e somente um redesenho do Electron ou dos componentes subjacentes do navegador consertará esse problema.

Os aplicativos Tauri são projetados de forma diferente desde o início para usar menos espaço em disco e menos memória. Mas isso tem o custo de ser uma tecnologia mais nova que depende muito do Rust — uma linguagem relativamente nova, também com um ecossistema de desenvolvimento relativamente novo. Um compromisso com o Tauri requer um compromisso com o Rust e o JavaScript, para o back-end e o front-end, respectivamente.

Minha conclusão: Tauri é melhor se você já está atualizado com Rust ou planeja se comprometer com ele, e se o tamanho do entregável e sua pegada de memória importam. Electron é melhor se você já conhece bem JavaScript — especialmente se você já entregou outros aplicativos baseados em Electron e quer alavancar esse conhecimento — e o consumo de memória e o tamanho binário do Electron não são um problema.

Conteúdo Relacionado

블로그로 돌아가기

댓글 남기기

댓글 게시 전에는 반드시 승인이 필요합니다.