Skip to content
Go

A Evolução "GoTH": templUI e a Nova Era de UIs Web com Segurança de Tipos em Go

Published: Duration: 7:14
0:00 0:00

Transcript

Apresentadora: E aí, pessoal, bem-vindos de volta ao Allur! Eu sou a Juliana Santos e hoje a gente vai bater um papo sobre uma mudança de ventos que eu estou sentindo muito forte na nossa comunidade. Sabe aquela sensação de que o desenvolvimento web ficou... complexo demais? Pois é. A gente passou anos empilhando frameworks JavaScript, lidando com bundles gigantescos e uma "fadiga" que parece que não tem fim. Mas, olha, tem um movimento rolando de volta às origens, só que com uma pegada super moderna. Estamos falando de SSR, o bom e velho Server-Side Rendering, mas de um jeito que a gente nunca viu antes em Go. Hoje vamos mergulhar na stack "GoTH" — que é Go, Templ e HTMX — e falar de uma novidade que apareceu até na Golang Weekly: o templUI. Se você quer saber como construir interfaces lindas, rápidas e — o melhor — com segurança de tipos total no Go, esse episódio foi feito pra você. Apresentadora: E pra desbravar esse ecossistema comigo, eu trouxe um cara que manja muito de arquitetura e que tem testado os limites dessa stack no dia a dia. Ele é desenvolvedor sênior e um grande entusiasta de Go. Seja muito bem-vindo ao Allur, Rafael Medeiros! Valeu por aceitar o convite, Rafael! Convidado: Valeu, Juliana! É um prazer enorme estar aqui no Allur. Cara, esse é um assunto que me deixa empolgado, porque eu sinto que a gente finalmente está encontrando um "caminho do meio" saudável no desenvolvimento web, sabe? Apresentadora: Total! E vamos começar pelo começo, Rafael. Muita gente ouve "GoTH" e pensa em muita coisa, menos em programação (risos). Explica pra gente o que é essa stack e por que ela virou esse "queridinho" de quem quer fugir da complexidade do ecossistema JS. Convidado: (Risos) Pois é, o nome é curioso, mas a ideia é genial pela simplicidade. O "G" é de Go, que a gente já conhece pela robustez no backend. O "T" é do Templ, que é uma linguagem de templating que gera código Go puro — e aqui que tá a mágica. E o "H" é do HTMX, que cuida da interatividade. A grande sacada da stack GoTH é que ela quebra aquela barreira chata entre frontend e backend. Sabe quando você tem que criar um tipo no Go e depois "espelhar" esse tipo no TypeScript pro seu React não quebrar? Com GoTH isso morre. Você lida com hipermídia, o servidor entrega o HTML pronto e o HTMX só faz a troca suave na tela. É como se a gente estivesse voltando a ser "full-stack de verdade" sem precisar de um canivete suíço de 500 MB de `node_modules`. Apresentadora: Massa! E a gente sabe que um dos grandes "poréns" de sair do React ou do Vue era que a gente perdia aquelas bibliotecas de componentes maravilhosas, tipo o shadcn/ui. Mas aí é que entra o templUI, né? O que ele traz pra mesa? Convidado: Cara, o templUI foi a peça que faltava no quebra-cabeça. Ele é literalmente inspirado no shadcn/ui, mas pro mundo Go. Antes, se você quisesse um modal bonitão, um menu de navegação responsivo ou uma tabela complexa em Go, você tinha que fazer na mão ou brigar com bibliotecas de templates que não conversavam bem entre si. O templUI traz esses componentes prontos, usando Tailwind CSS pra estilização, mas tudo dentro do Templ. O resultado é uma interface profissional, moderna, que você instala e usa como se fosse um componente Go. É muito produtivo, tipo assim, você não precisa mais ser um designer de CSS pra ter um dashboard com cara de 2024 usando Go. Apresentadora: E tem um ponto que me chamou muito a atenção no post que a gente leu: a segurança de tipos, o tal do *Type Safety*. No `html/template` padrão do Go, a gente às vezes só descobria que errou o nome de uma variável quando a página quebrava em runtime, né? Como o Templ resolve isso? Convidado: Nossa, Juliana, isso pra mim é o divisor de águas. O Templ compila os seus arquivos `.templ` em código Go puro. Então, se você define um componente de botão e diz que ele recebe uma `struct` com `Label` e `URL`, e lá no seu código você tenta passar um inteiro, o compilador do Go vai gritar com você na hora! Não tem erro em tempo de execução. O LSP (Language Server Protocol) funciona dentro do template, então você tem autocomplete, você consegue dar um "Go to Definition" nas propriedades... é surreal de bom. Você constrói a UI com a mesma confiança que escreve uma regra de negócio no backend. Apresentadora: Caramba, isso é música pros ouvidos de quem já passou raiva com erro de `undefined` no meio da produção! (risos). Agora, falando de performance, Rafael... a gente vive a era das SPAs (Single Page Applications) ultra rápidas. Como fica a experiência do usuário com essa stack? Não fica aquele "refresh" de página antigo? Convidado: De jeito nenhum! É aí que o HTMX brilha. Em vez de recarregar a página inteira, o HTMX pede pro servidor apenas o fragmento de HTML que mudou. Por exemplo, se você clica num botão de "Curtir", o servidor Go processa isso e devolve só o HTML do botão atualizado. O usuário sente que a aplicação é instantânea, igual a um React, mas com um detalhe: o bundle size. Uma aplicação React básica começa ali nos 150kb, 200kb de JS. O HTMX tem uns 15kb. O carregamento inicial é um tiro! E como é SSR, o SEO já vem de brinde, sem precisar configurar Next.js ou coisas do tipo. Apresentadora: É uma economia de recursos absurda, né? Menos código pra manter, menos código pro navegador baixar... Mas me conta uma coisa, Rafael, você que está usando isso: qual foi o maior desafio ou o momento "Aha!" que você teve quando começou com o templUI? Convidado: O maior desafio no começo foi mudar o "chip" mental. A gente foi doutrinado a pensar que tudo tem que ser JSON pra lá e pra cá. Quando eu entendi que eu podia retornar HTML direto do meu handler e que o Templ cuidava da segurança de tipos, parece que as peças se encaixaram. O momento "Aha!" foi quando eu refatorei um dashboard complexo que a gente tinha em React. O código Go ficou mais limpo, a lógica de validação ficou centralizada num lugar só e a performance de carregamento no mobile foi de "okay" para "instantânea". Foi ali que eu vi que não era só nostalgia, era eficiência técnica mesmo. Apresentadora: Legal demais! E pra quem está ouvindo a gente e quer começar? Onde que o pessoal deve mirar primeiro? Convidado: Cara, recomendo muito dar uma olhada na documentação oficial do Templ (templ.guide) e depois correr pro repositório do templUI. Tem vários exemplos práticos lá. Começa pequeno, faz um projetinho de lista de tarefas ou um dashboard simples. Quando você vir o compilador do Go validando o seu HTML, você não vai querer voltar atrás. Apresentadora: Sensacional, Rafael! Olha, eu confesso que fiquei com muita vontade de abrir o VS Code agora e testar essa stack. O desenvolvimento web precisava desse "respiro" de simplicidade com robustez. Convidado: Com certeza, Juliana! Go está virando uma ferramenta full-stack de respeito. Apresentadora: Bom, pessoal, chegamos ao fim de mais um Allur. Rafael, obrigada demais por compartilhar essa experiência com a gente. Foi aula! Convidado: Valeu pelo convite, Juliana! Até a próxima, galera! Apresentadora: E valeu a você por sintonizar o Allur hoje. Se você curtiu esse papo sobre GoTH e templUI, compartilha com aquele seu amigo que vive reclamando da complexidade do JavaScript — ele vai te agradecer. Todas as referências que o Rafael citou vão estar na descrição do episódio. A gente se vê no próximo capítulo. Valeu!