React no Cloudflare Workers com Hono
Configure um Worker do Cloudflare com Hono e renderToReadableStream para servir páginas React a partir da borda.
React no Cloudflare Workers com Hono é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
O que é Hono
Hono é uma estrutura web leve e ultrarrápida, projetada para ser executada em ambientes de execução na borda, incluindo Cloudflare Workers, Deno Deploy, Bun e Node.js. Sua API é inspirada no Express, mas foi criada desde o início para os padrões da Web (Fetch API, Request/Response), o que a torna uma escolha natural para ambientes de borda.
Criando um Cloudflare Worker com Hono
Criar a estrutura de um novo projeto Hono para Cloudflare Workers é simples: npm create hono@latest solicita que você escolha um modelo, selecione "cloudflare-workers" e cria um projeto pré-configurado com wrangler (a CLI da Cloudflare) e a dependência Hono.
Adicionando SSR do React
Para renderizar React no servidor dentro de um Worker Hono, instale react, react-dom e @types/react; depois, importe renderToReadableStream de react-dom/server. Essa função faz parte da API de transmissão em fluxo do React 18 e foi projetada para ambientes compatíveis com a API de fluxos da Web — como o Cloudflare Workers.
O manipulador de rotas do Hono
Um manipulador de rotas SSR típico chama renderToReadableStream com seu componente React raiz, aguarda o fluxo e então usa c.body(stream, { headers: { 'Content-Type': 'text/html' } }) ou c.html(htmlString) para enviar a resposta. O fluxo produz blocos de HTML que o navegador pode renderizar progressivamente.
Tipo de retorno de renderToReadableStream
renderToReadableStream retorna uma promessa que é resolvida com um ReadableStream de blocos de HTML. Esse ReadableStream está em conformidade com a API de fluxos da Web e pode ser passado diretamente como o corpo de um objeto Response, sendo ideal para o manipulador fetch do Cloudflare Workers.
Envolvendo o conteúdo em um esqueleto HTML
O fluxo React produz o HTML da árvore de componentes, mas não o documento ao redor. Você precisa inserir o fluxo em um esqueleto HTML: uma string contendo a declaração do tipo de documento, o cabeçalho com metatags e o link CSS, a tag de abertura do corpo — depois o fluxo React — e, por fim, as tags de fechamento do corpo e do HTML.
Fornecendo recursos estáticos
Um pacote cliente React criado com Vite precisa ser fornecido junto com o Worker. O Cloudflare Pages ou o recurso Assets dos Workers cuida disso: c.env.ASSETS.fetch(request) encaminha as solicitações de recursos (JS, CSS e imagens) para os arquivos estáticos enviados com a implantação do Worker.
O ponto de entrada worker.js
O arquivo de entrada do Worker exporta um objeto padrão com um manipulador fetch: export default { fetch: app.fetch }. O método app.fetch do Hono já é um manipulador fetch compatível, que recebe uma Request e retorna uma Response, portanto ele se conecta diretamente ao ambiente de execução do Workers.
Desenvolvimento local com Wrangler
wrangler dev inicia um servidor de desenvolvimento local que emula o ambiente de execução do Cloudflare Workers em sua máquina. Ele observa alterações nos arquivos e recarrega automaticamente, proporcionando um ciclo rápido de desenvolvimento local antes da implantação em produção.
Implantando na Cloudflare
wrangler deploy empacota e envia seu código do Worker para a rede da Cloudflare, disponibilizando-o em mais de 300 locais de borda em poucos segundos. O arquivo de configuração wrangler.toml especifica o ID da sua conta, o nome do Worker e quaisquer vinculações a namespaces KV ou bancos de dados D1.
Hidratação com bootstrapScripts
Para adicionar interatividade no cliente, passe bootstrapScripts: ['/assets/client.js'] a renderToReadableStream. React inserirá uma tag de script no HTML que carrega o pacote cliente e chama hydrateRoot no DOM renderizado no servidor, tornando a página interativa depois que o JS for carregado.
Tipo de retorno de renderToReadableStream
O que renderToReadableStream retorna?
Resumo da lição
Hono fornece uma estrutura HTTP leve e nativa da borda que se integra perfeitamente a renderToReadableStream do React. O ponto de entrada do Worker exporta app.fetch diretamente para o ambiente de execução do Workers, os recursos estáticos são fornecidos por meio das vinculações ASSETS e o wrangler cuida tanto do desenvolvimento local quanto da implantação em produção. bootstrapScripts conecta o HTML transmitido em fluxo ao pacote de hidratação no cliente.
Perguntas Frequentes
A aula “React no Cloudflare Workers com Hono” é grátis?
Sim — o texto completo de “React no Cloudflare Workers com Hono” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “React no Cloudflare Workers com Hono”?
Configure um Worker do Cloudflare com Hono e renderToReadableStream para servir páginas React a partir da borda. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “React no Cloudflare Workers com Hono”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O que é renderização na borda e por que é importante
- React no Cloudflare Workers com Hono
- SSR com transmissão a partir da borda
- Estratégias de cache na borda para aplicações React