Hono — Web Framework Built on Web Standards
URL: https://hono.dev/
Descrição: Hono é um framework web ultrarrápido e leve para JavaScript/TypeScript, criado para ser portátil e funcionar em vários ambientes de execução (runtimes) usando APIs padrões da web (como Request e Response).
🔥 Visão Geral
Hono (que significa flame em japonês) é um framework de aplicações web inspirado em outros frameworks populares (como Express), mas com foco em performance, portabilidade e uso de Web Standards.
Principais Características
- 🚀 Ultrafast & Lightweight — router principal baseado em expressões regulares extremamente rápido; pacote
hono/tinycom ~12–14 kB. - 🌍 Multi-runtime — funciona em Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, AWS Lambda, Node.js e mais.
- 🔋 Batteries Included — middleware integrado e suporte fácil a middleware customizados/terceiros.
- 😃 Developer Experience — API limpa, suporte completo a TypeScript e foco em DX.
🚀 Começando
📌 Instalação e Projeto
Você pode iniciar um novo projeto com o comando:
npm create hono@latest my-appe seguir as instruções interativas para escolher o template desejado (☁️ Cloudflare, 🌍 Node.js, 🦕 Deno, etc.).
📦 Estrutura Básica
📍 Hello World
import { Hono } from 'hono';
const app = new Hono();
app.get('/', (c) => {
return c.text('Hello Hono!');
});
export default app;Uma vez que o projeto esteja instalado e rodando (npm run dev), você pode acessar http://localhost:8787 (ou outra porta configurada).
🧠 Conceitos Centrais
🧩 Web Standards
Hono usa apenas APIs nativas como fetch, Request, Response, URL, Headers, etc., o que garante que sua aplicação seja portável entre diferentes runtimes sem depender de implementações específicas.
📍 Roteamento (Routing)
Hono possui múltiplos roteadores internos:
- RegExpRouter — muito rápido para matching de rotas.
- TrieRouter — utiliza Trie tree para suportar todos os padrões de rota conhecidos.
- SmartRouter — escolhe automaticamente o melhor roteador para cada caso.
Essa combinação permite equilíbrio entre desempenho e flexibilidade.
🛠️ Middleware
Middleware pode ser registrado com app.use() e funciona antes e/ou depois do handler principal. Você pode usar middleware para:
- Logging
- CORS
- Autenticação
- Validação de requests
Exemplo de middleware:
app.use('/posts/*', cors());
app.use(async (c, next) => {
console.log('before');
await next();
console.log('after');
});Se um middleware retorna um Response, ele encerra o processamento.
🧑💻 Executando em Node.js
Embora originalmente criado para runtimes baseados em Web Standards, Hono também roda no Node.js com um adaptador específico:
import { serve } from '@hono/node-server';
import { Hono } from 'hono';
const app = new Hono();
app.get('/', (c) => c.text('Hello Node.js!'));
serve(app);Isso permite rodar Hono como um servidor Node tradicional.
🧩 JSX Support
Hono permite usar JSX para renderizar HTML em rotas quando combinado com hono/jsx, incluindo suporte a fragmentos e metadata hoisting.
📊 Boas Práticas
- Evitar padrões de controllers tradicionais que dificultem a inferência de tipos.
- Use handlers e middleware inline para manter melhor tipagem e simplicidade.
📌 Resumo
Hono é um framework moderno, rápido e portátil para construir APIs e aplicações web em JavaScript/TypeScript que:
- Funciona em vários ambientes sem mudanças no código.
- Usa APIs padrão da web para máxima compatibilidade.
- Oferece uma experiência de desenvolvedor limpa e tipada.
🧾 Referências
- Documentação oficial — https://hono.dev/
- Guias e conceitos — https://hono.dev/docs/
- Node.js adapter — https://hono.dev/docs/getting-started/nodejs