🚀 从零搭建Bun + Hono + Drizzle 后端,这个开源项目你可以试一试!

641 阅读4分钟

前言

最近在开发一个新项目时想尝试下新框架 Hono,发现市面上的后端脚手架要么太重,要么太轻,要么就是配置复杂。作为一个追求效率的开发者,我决定自己动手搭建一个开箱即用的后端脚手架。今天给大家分享这个基于 Hono + TypeScript + PostgreSQL 的后端项目模板,它集成了现代后端开发的最佳实践,让你可以专注于业务逻辑,而不是重复配置。

🎯 项目亮点

1. 技术栈现代化

  • Hono: 轻量级、高性能的 Web 框架

  • TypeScript: 类型安全,开发体验极佳

  • PostgreSQL + Drizzle ORM: 强大的数据库解决方案

  • Bun: 超快的 JavaScript 运行时

  • Zod: 运行时类型验证

2. 开箱即用的功能

  • ✅ 用户认证系统(JWT + Argon2 密码加密)

  • ✅ 请求限流中间件

  • ✅ 统一错误处理

  • ✅ 结构化日志(Pino)

  • ✅ CORS 配置

  • ✅ 健康检查接口

  • ✅ 定时任务支持

  • ✅ 数据库迁移工具

3. 开发体验优化

  • 🗒️ ESLint + Prettier 代码规范

  • 📝 Conventional Commits 提交规范

  • 🚀 Git Hooks 自动检查

  • 📊 Drizzle Studio 数据库管理界面

快速开始

1. 克隆项目

git clone https://github.com/zlmica/hono-backend-starter.git

cd hono-backend-starter

2. 安装依赖

bun install

3. 配置环境变量

cp env.example .env # 编辑 .env 文件,配置数据库连接等信息

4. 启动 PostgreSQL 数据库

# 使用 Docker Compose 启动 PostgreSQL
docker-compose up postgres -d

5. 初始化数据库

# 执行数据库迁移,创建表结构
bun run db:migrate

# 可选:填充测试数据
bun run db:seed

6. 启动开发服务器

bun run dev

就这么简单!你的后端服务就启动了。

🏗️ 项目架构

src/
├── app.ts              # 应用主文件
├── index.ts            # 入口文件
├── env.ts              # 环境变量配置
├── db/                 # 数据库相关
│   ├── index.ts        # 数据库连接
│   ├── schema.ts       # 数据库模式
│   └── schemas/        # 表结构定义
├── lib/                # 工具库
├── middlewares/        # 中间件
├── routes/             # 路由
└── utils/              # 工具函数

核心功能展示

用户认证系统

项目内置了完整的用户认证流程:


// 用户注册

POST /auth/register

{

  "username""testuser",

  "password""password123",

  "name""测试用户",

  "phone""13800138000"

}

// 用户登录

POST /auth/login

{

  "username""testuser",

  "password""password123"

}

中间件系统


// 请求限流

app.use(limiter(100)) // 每分钟最多100次请求

// 认证中间件

app.use(authMiddleware) // 验证JWT token

// 统一响应格式

app.use(responseWrapper) // 自动包装响应数据

数据库操作

使用 Drizzle ORM,类型安全的数据库操作:


// 查询用户

const user = await db.select().from(users).where(eq(users.id1))

// 创建用户

const newUser = await db.insert(users).values({

  username'newuser',

  password: hashedPassword,

  name'新用户',

  phone'13900139000'

})

🚀 部署方案

项目提供了多种部署方式:

本地部署

bun run deploy

服务器部署

bun run deploy:server

Docker 部署

docker-compose up -d

📈 性能优化

  • Hono 框架: 基于 Web 标准,性能优异

  • Bun 运行时: 比 Node.js 快 3-4 倍

  • 连接池: 数据库连接复用

  • 缓存策略: ETag 支持

  • 压缩: 自动响应压缩

开发规范

Git 提交规范

# 使用交互式提交
bun run commit
# 或手动提交
git commit -m "feat: 添加用户管理功能"

代码检查

# 检查代码
bun run lint
# 自动修复
bun run lint:fix

🔧 扩展指南

添加新的路由

// src/routes/product.index.ts
import { createRouter } from '../lib/create-app'

const products = new createRouter()

products.get('/', async (c) => {
  return c.json({ message: '产品列表' })
})

export default products

添加新的数据库表

// src/db/schemas/product.ts
import { pgTable, serial, text } from 'drizzle-orm/pg-core'

export const products = pgTable('products', {
  id: serial('id').primaryKey(),
  name: text('name').notNull(),
  description: text('description'),
})

适用场景

  • 🏢 企业内部系统

  • 🚀 创业项目 MVP

  • 📱 移动应用后端

  • ▫️ 中小型 Web 应用

  • 📖 学习 TypeScript 后端开发

学习资源

贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 项目

  2. 创建功能分支

  3. 提交更改

  4. 推送到分支

  5. 创建 Pull Request

结语

这个项目是我在实际开发中总结实践试出来的,希望能帮助到有同样需求的开发者。如果你觉得有用,请给个 ⭐️ 支持一下!项目地址 有什么问题或建议,欢迎在评论区讨论!