Aller au contenu

Hono ​

Hono — qui signifie flamme🔥 en japonais — est un framework Web compact, simple et ultrarapide, fondé sur les standards du Web. Il fonctionne dans tous les environnements JavaScript : Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, Netlify, AWS Lambda, Lambda@Edge et Node.js.

Rapide, mais pas seulement.

ts
import { 
Hono
} from 'hono'
const
app
= new
Hono
()
app
.
get
('/', (
c
) =>
c
.
text
('Hono!'))
export default
app

Démarrage rapide ​

Exécutez simplement ceci :

sh
npm create hono@latest
sh
yarn create hono
sh
pnpm create hono@latest
sh
bun create hono@latest
sh
deno init --npm hono@latest

Fonctionnalités ​

  • Ultrarapide 🚀 — Le routeur RegExpRouter est extrêmement rapide. Il n’utilise pas de boucles linéaires. Tout simplement rapide.
  • Léger 🪶 — Le préréglage hono/tiny pèse moins de 14 Ko. Hono n’a aucune dépendance et utilise uniquement les standards du Web.
  • Plusieurs environnements d’exécution 🌍 — Fonctionne sur Cloudflare Workers, Fastly Compute, Deno, Bun, AWS Lambda ou Node.js. Le même code fonctionne sur toutes les plateformes.
  • Tout est inclus 🔋 — Hono propose des middlewares intégrés, personnalisés ou tiers, ainsi que des fonctions utilitaires. Tout est inclus.
  • Une expérience de développement agréable 😃 — Des API très claires et une prise en charge de premier ordre de TypeScript. Désormais, tout est typé.

Cas d’usage ​

Hono est un framework simple pour applications Web, comparable à Express, sans frontend. Mais il s’exécute en périphérie des CDN et permet de construire des applications plus grandes en l’associant à des middlewares. Voici quelques exemples d’utilisation.

  • Créer des API Web
  • Servir de proxy pour des serveurs backend
  • Servir de façade à un CDN
  • Créer une application en périphérie du réseau
  • Fournir le serveur de base d’une bibliothèque
  • Créer une application full-stack

Qui utilise Hono ? ​

ProjetPlateformeUtilisation
cdnjsCloudflare WorkersUn service CDN gratuit et open source. Hono est utilisé pour le serveur d’API.
Cloudflare D1Cloudflare WorkersDes bases de données SQL serverless. Hono est utilisé pour le serveur d’API interne.
Cloudflare Workers KVCloudflare WorkersUne base de données clé-valeur serverless. Hono est utilisé pour le serveur d’API interne.
BaseAIServeur d’IA localDes pipelines d’agents d’IA serverless avec mémoire. Un framework d’IA agentique open source pour le Web. Serveur d’API avec Hono.
UnkeyCloudflare WorkersUne solution open source d’authentification et d’autorisation d’API. Hono est utilisé pour le serveur d’API.
OpenStatusBunUne plateforme open source de supervision de sites Web et d’API. Hono est utilisé pour le serveur d’API.
Deno BenchmarksDenoUn environnement TypeScript sécurisé fondé sur V8. Hono est utilisé pour les tests de performance.
ClerkCloudflare WorkersUne plateforme open source de gestion des utilisateurs. Hono est utilisé pour le serveur d’API.
PostHogNode.jsLa plateforme open source pour créer des produits autonomes. Hono est utilisé pour le serveur MCP.

Ainsi que les projets suivants.

Vous souhaitez voir d’autres exemples ? Consultez Qui utilise Hono en production ?.

Hono en une minute ​

Une démonstration de la création d’une application pour Cloudflare Workers avec Hono.

Un GIF montrant la création rapide d’une application Hono avec des itérations rapides.

Ultrarapide ​

Hono est le plus rapide parmi les routeurs pour Cloudflare Workers comparés ici.

Hono x 402,820 ops/sec ±4.78% (80 runs sampled)
itty-router x 212,598 ops/sec ±3.11% (87 runs sampled)
sunder x 297,036 ops/sec ±4.76% (77 runs sampled)
worktop x 197,345 ops/sec ±2.40% (88 runs sampled)
Fastest is Hono
✨  Done in 28.06s.

Consultez d’autres tests de performance.

Léger ​

Hono est très compact. Avec le préréglage hono/tiny, sa taille minifiée est inférieure à 14 Ko. De nombreux middlewares et adaptateurs sont disponibles, mais ils ne sont inclus dans le bundle que s’ils sont utilisés. À titre de comparaison, Express pèse 572 Ko.

$ npx wrangler dev --minify ./src/index.ts
 ⛅️ wrangler 2.20.0
--------------------
⬣ Listening at http://0.0.0.0:8787
- http://127.0.0.1:8787
- http://192.168.128.165:8787
Total Upload: 11.47 KiB / gzip: 4.34 KiB

Plusieurs routeurs ​

Hono possède plusieurs routeurs.

RegExpRouter est le routeur le plus rapide de l’écosystème JavaScript. Il fait correspondre les routes à une seule grande expression régulière créée avant leur traitement. Associé à SmartRouter, il prend en charge tous les motifs de routes.

LinearRouter enregistre les routes très rapidement et convient donc aux environnements qui initialisent l’application à chaque exécution. PatternRouter se contente d’ajouter les motifs et de chercher une correspondance, ce qui le rend compact.

Consultez plus d’informations sur les routeurs.

Standards du Web ​

Grâce aux standards du Web, Hono fonctionne sur de nombreuses plateformes.

  • Cloudflare Workers
  • Fastly Compute
  • Deno
  • Bun
  • Vercel
  • AWS Lambda
  • Lambda@Edge
  • Autres plateformes

En utilisant un adaptateur Node.js, Hono fonctionne aussi sur Node.js.

Consultez plus d’informations sur les standards du Web.

Middlewares et fonctions utilitaires ​

Hono possède de nombreux middlewares et fonctions utilitaires. Cela concrétise l’idée « Écrire moins, faire plus ».

Hono fournit directement des middlewares et des fonctions utilitaires pour les usages suivants :

Par exemple, quelques lignes de code suffisent avec Hono pour ajouter ETag et la journalisation des requêtes :

ts
import { Hono } from 'hono'
import { etag } from 'hono/etag'
import { logger } from 'hono/logger'

const app = new Hono()
app.use(etag(), logger())

Consultez plus d’informations sur les middlewares.

Expérience de développement ​

Hono offre une expérience de développement agréable.

L’objet Context facilite l’accès aux objets Request et Response. De plus, Hono est écrit en TypeScript. Hono possède des types.

Par exemple, les paramètres de chemin ont des types littéraux.

Une capture d’écran montrant les types littéraux corrects des paramètres d’URL dans Hono. L’URL "/entry/:date/:id" permet les paramètres de requête "date" ou "id"

Le validateur et le client Hono hc permettent d’utiliser le mode RPC. Dans ce mode, vous pouvez utiliser votre validateur préféré, tel que Zod, partager facilement les spécifications de l’API côté serveur avec le client et créer des applications dont les types sont vérifiés.

Consultez les stacks Hono.

Publié sous licence MIT.