Skip to content

Hono ​

Hono - 일본어로 '불꽃🔥'을 의미한다 - 는 웹 표준을 기반으로 구축된 작고 간단하며 초고속 웹 프레임워크이다. Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, Netlify, AWS Lambda, Lambda@Edge, Node.js 등 모든 자바스크립트 런타임에서 동작한다.

빠를 뿐만 아니라 더 많은 장점을 제공한다.

ts
import { Hono } from 'hono'
const app = new Hono()

app.get('/', (c) => c.text('Hono!'))

export default app

빠른 시작 ​

다음 명령어를 실행하면 된다:

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

주요 기능 ​

  • 초고속 🚀 - RegExpRouter는 선형 루프를 사용하지 않아 매우 빠르다. 속도가 빠르다.
  • 경량화 🪶 - hono/tiny 프리셋은 14kB 미만이다. Hono는 의존성이 없고 웹 표준만 사용한다.
  • 멀티 런타임 🌍 - Cloudflare Workers, Fastly Compute, Deno, Bun, AWS Lambda, Node.js 등 다양한 환경에서 동작한다. 동일한 코드가 모든 플랫폼에서 실행된다.
  • 필수 기능 내장 🔋 - Hono는 기본 미들웨어, 커스텀 미들웨어, 서드파티 미들웨어, 헬퍼 함수를 제공한다. 필요한 모든 기능이 포함되어 있다.
  • 탁월한 개발자 경험 😃 - 깔끔한 API를 제공한다. 퍼스트클래스 TypeScript 지원을 통해 타입을 완벽하게 활용할 수 있다.

사용 사례 ​

Hono는 Express와 유사한 간단한 웹 애플리케이션 프레임워크로, 프론트엔드 기능은 포함하지 않는다. 하지만 CDN 에지에서 실행되며, 미들웨어와 결합하면 더 큰 애플리케이션을 구축할 수 있다. 다음은 Hono의 주요 사용 사례들이다.

  • 웹 API 구축
  • 백엔드 서버의 프록시
  • CDN의 프론트엔드
  • 에지 애플리케이션
  • 라이브러리의 기본 서버
  • 풀스택 애플리케이션

Hono를 사용하는 곳은? ​

프로젝트플랫폼용도
cdnjsCloudflare Workers무료 오픈소스 CDN 서비스. Hono는 API 서버로 사용됨.
Cloudflare D1Cloudflare Workers서버리스 SQL 데이터베이스. Hono는 내부 API 서버로 사용됨.
Cloudflare Workers KVCloudflare Workers서버리스 키-값 데이터베이스. Hono는 내부 API 서버로 사용됨.
BaseAI로컬 AI 서버메모리가 있는 서버리스 AI 에이전트 파이프라인. 웹을 위한 오픈소스 에이전트 AI 프레임워크. Hono로 API 서버 구현.
UnkeyCloudflare Workers오픈소스 API 인증 및 권한 부여. Hono는 API 서버로 사용됨.
OpenStatusBun오픈소스 웹사이트 및 API 모니터링 플랫폼. Hono는 API 서버로 사용됨.
Deno BenchmarksDenoV8 기반의 안전한 TypeScript 런타임. Hono는 벤치마킹에 사용됨.

그 외에도 다음과 같은 프로젝트가 있다.

더 많은 사례를 확인하고 싶다면 Hono를 실제 프로덕션에서 사용하는 곳을 참고하라.

Hono를 1분 만에 이해하기 ​

Hono를 사용해 Cloudflare Workers용 애플리케이션을 만드는 데모를 소개한다.

데모

초고속 성능 ​

Hono는 Cloudflare Workers용 라우터 중에서 가장 빠르다.

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.

더 많은 벤치마크는 여기에서 확인할 수 있다.

경량성 ​

Hono는 매우 가볍다. hono/tiny 프리셋을 사용하면, 압축 후 크기가 14KB 미만이다. 다양한 미들웨어와 어댑터가 있지만, 사용할 때만 번들에 포함된다. 참고로 Express의 크기는 572KB이다.

$ 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

다중 라우터 ​

Hono는 여러 종류의 라우터를 제공한다.

RegExpRouter는 자바스크립트 세계에서 가장 빠른 라우터다. 라우트를 매칭하기 위해 디스패치 전에 하나의 큰 정규식을 생성한다. SmartRouter와 함께 사용하면 모든 라우트 패턴을 지원한다.

LinearRouter는 라우트를 매우 빠르게 등록하므로, 매번 애플리케이션을 초기화하는 환경에 적합하다. PatternRouter는 단순히 패턴을 추가하고 매칭하기 때문에 가볍다.

라우터에 대한 더 많은 정보를 참고하자.

웹 표준 ​

웹 표준을 활용함으로써, Hono는 다양한 플랫폼에서 동작한다.

  • Cloudflare Workers
  • Cloudflare Pages
  • Fastly Compute
  • Deno
  • Bun
  • Vercel
  • AWS Lambda
  • Lambda@Edge
  • 기타

또한 Node.js 어댑터를 사용하면, Hono는 Node.js에서도 동작한다.

웹 표준에 대한 더 많은 정보를 확인해 보자.

미들웨어 & 헬퍼 ​

Hono는 다양한 미들웨어와 헬퍼를 제공한다. 이를 통해 "적은 코드로 더 많은 일을 할 수 있다"는 철학을 실현한다.

Hono는 기본적으로 다음과 같은 미들웨어와 헬퍼를 지원한다:

예를 들어, ETag와 요청 로깅을 추가하는 것은 Hono를 사용하면 단 몇 줄의 코드로 가능하다:

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

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

미들웨어에 대한 더 많은 정보를 확인할 수 있다.

개발자 경험 ​

Hono는 뛰어난 개발자 경험을 제공한다.

Context 객체 덕분에 Request/Response에 쉽게 접근할 수 있다. 또한 Hono는 TypeScript로 작성되어 있어 타입을 지원한다.

예를 들어, 경로 매개변수는 리터럴 타입으로 처리된다.

SS

또한, Validator와 Hono Client(hc)는 RPC 모드를 가능하게 한다. RPC 모드에서는 Zod와 같은 선호하는 검증 도구를 사용할 수 있고, 서버 측 API 스펙을 클라이언트와 쉽게 공유하여 타입 안전한 애플리케이션을 구축할 수 있다.

자세한 내용은 Hono 스택을 참고한다.

Released under the MIT License.