FisherHub Blog
← 返回列表 | 开发实践

Hono 入门:为边缘计算而生的 TypeScript Web 框架

比 Express 快 3 倍、原生支持 Cloudflare Workers——Hono 重新定义了轻量级 Web 框架

Hono 是什么

Hono(炎)是一个运行在边缘运行时的 Web 框架。它不仅能在 Node.js 运行,还能在 Cloudflare Workers、Deno、Bun、Vercel Edge 等多种环境中运行。

核心理念:Write once, run everywhere.

为什么选 Hono

特性ExpressHono
运行时Node.js only跨平台
TypeScript额外配置一等公民
路由性能基准线~3x 更快
Bundle 大小~2MB~12KB
Edge 支持✅ 原生

第一个 Hono 应用

import { Hono } from 'hono';

const app = new Hono();

app.get('/', (c) => c.text('Hello FisherHub!'));

app.get('/api/posts/:id', (c) => {
  const id = c.req.param('id');
  return c.json({ id, title: 'Article ' + id });
});

export default app;

中间件

Hono 内置了大量中间件:

import { cors } from 'hono/cors';
import { logger } from 'hono/logger';
import { jwt } from 'hono/jwt';

app.use('/api/*', cors());
app.use('*', logger());
app.use('/admin/*', jwt({ secret: 'your-secret' }));

RPC 模式

Hono 最独特的特性——类型安全的客户端调用:

// 服务端
const route = app.get('/posts/:id', (c) => {
  return c.json({ title: 'Hello' });
});
export type AppType = typeof route;

// 客户端
import { hc } from 'hono/client';
import type { AppType } from '../server';

const client = hc<AppType>('https://api.example.com');
const res = await client.posts[':id'].$get({ param: { id: '1' } });
const data = await res.json(); // 自动推断类型!

Hono 是我目前最推荐的 TypeScript 后端框架——足够轻、足够快、足够好用。