Kotlin / Jetpack

Explorando Compose HTML para Renderização do Lado do Servidor

O blog da JetBrains explora a possibilidade de o framework Compose, usado em Android, Desktop e iOS, ser adaptado para renderização de HTML no lado do servidor (SSR) na JVM. A ideia é oferecer aos desenvolvedores backend uma maneira de criar interfaces de usuário server-side utilizando componentes reutilizáveis e tipados com Kotlin, sem a necessidade de linguagens de template ou código separado.

Compartilhar
SSR
Backend Notícias

Explorando Compose HTML para Renderização do Lado do Servidor

Algo está acontecendo no desenvolvimento de web renderizado pelo servidor. O React lançou Componentes do Servidor. O HTMX tornou 'hipermídia' legal novamente. A Phoenix LiveView provou que um servidor pode enviar atualizações interativas da interface do usuário sem a presença de um framework cliente. Cada ecossistema parece estar redescobrindo o servidor como lugar para renderizar interfaces, exceto um: a JVM. E se o Compose, a ferramenta de interface já presente em Android, Desktop e iOS, desse uma chance à renderização do HTML pelo lado do servidor também?

A visão é simples: dar aos desenvolvedores backend uma maneira de construir interfaces renderizadas pelo servidor como componentes Compose tipo-safos e reutilizáveis (real Kotlin, com autocompletar, refatoração e verificações do compilador) em vez de modelos baseados em strings. Nenhuma linguagem de modelo separada, nenhuma base de código UI a manter ao lado do backend. Este blog serve para explorar algumas ideias sobre como alcançar essa visão e representa uma exploração em vez de um compromisso oficial.

Toda grande framework JS agora tem sua história de SSR: o React tem o Next, o Vue tem o Nuxt, o Svelte tem o SvelteKit. E não é apenas o ecossistema JS. C#, Rust e até mesmo linguagens funcionais como Elixir têm soluções inovadoras para construir aplicações fullstack sem depender de motores de modelagem. Em vez disso, eles empacotam estado e renderização em componentes reutilizáveis diretamente no código, da mesma maneira que o Compose já faz em todos os lugares.

Agora mesmo a JVM não tem um cavalo nesta corrida. Não falta bibliotecas SSR na JVM. Mas a maioria delas precisa de algum tipo de linguagem de modelo e nada próximo suficiente para ser reconhecido como componente por um desenvolvedor JS.

Mas já existe um framework que é testado em batalha e capaz de preencher essa lacuna na JVM, ele apenas nunca realmente mirou o servidor. O Compose Multiplatform permite escrever lógica de negócios e Interfaces do Usuário uma vez e compartilhá-las entre plataformas: Android, iOS, Desktop e a web. Ele só precisa dar um salto para o servidor.

O Compose Multiplatform já mira na web, mas não da maneira que você gostaria para isso: renderiza diretamente em uma tela, compartilhando código de interface entre plataformas móveis e o navegador ao custo do SEO, tempos de carregamento e acessibilidade.

Uma maneira de renderizar HTML com Compose já existe, e é mais antiga que o Compose para Web: o Compose HTML, que usa a runtime do Compose para construir SPA em Kotlin e compila isso para JS usando o compilador Kotlin/JS. Adicione um alvo JVM e poderia fazer SSR também. A renderização acontece diretamente em Kotlin: componentes reais, tipos reais, nenhuma linguagem de modelo.

Desenvolvedores JVM presos com Thymeleaf/JSP ou alcançando por um framework JS separado apenas para construir aplicações fullstack não teriam que deixar a plataforma: componentes Compose tipo-safos e reutilizáveis substituem o que a linguagem de modelo costumava lidar. A interoperabilidade Java do Kotlin significa que se encaixaria em grandes aplicativos legados Java também.

Pegue algo tão básico quanto um componente cartão reutilizável. Em Thymeleaf, isso é uma fragmento definida em seu próprio arquivo, chamada pelo nome, com parâmetros passados como strings não tipadas:

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa