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/tiny com ~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-app

e 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