FisherHub Blog
← 返回列表 | 工具笔记

用 Hono 替代 Express:性能对比与迁移指南

实测 Hono 路由性能是 Express 的 3 倍,bundle 只有 12KB——是时候换掉了

基准测试

同一个简单 API(JSON 响应),本地测试(Node 22):

框架请求/秒P99 延迟Bundle
Express~15,000~12ms2.1MB
Hono~45,000~4ms12KB
Fastify~35,000~5ms0.8MB

Hono 在 Node.js 上的表现同样出色——它不是为了 Edge 而牺牲性能的框架。

语法对比

// Express
const express = require('express');
const app = express();

app.get('/users/:id', (req, res) => {
  const { id } = req.params;
  res.json({ id, name: 'Alice' });
});

// Hono
import { Hono } from 'hono';

const app = new Hono();

app.get('/users/:id', (c) => {
  const id = c.req.param('id');
  return c.json({ id, name: 'Alice' });
});

迁移步骤

  1. 安装 Hono
npm install hono
  1. 创建路由文件
// routes/users.ts
import { Hono } from 'hono';
const users = new Hono();

users.get('/', (c) => c.json([{ id: 1, name: 'Alice' }]));
users.get('/:id', (c) => c.json({ id: c.req.param('id') }));

export default users;
  1. 组装应用
// app.ts
import { Hono } from 'hono';
import users from './routes/users';

const app = new Hono();
app.route('/users', users);

中间件映射

ExpressHono
cors()cors()
morganlogger()
express.json()内置
express-jwtjwt()
compressioncompress()
helmetsecureHeaders()

什么时候不换

  • 项目有大量 Express 中间件依赖
  • 团队不熟悉 TypeScript
  • 已有成熟的 Express 工具链(如 Passport.js)

但对于新项目或渐进迁移,Hono 是目前最优的选择——更快、更小、类型更安全。