简介
Vafast 不只是一个框架,更是一种 结构、清晰、可控 的开发哲学。
🎯 Vafast 哲学
结构即真相 Structure is Truth
API 用代码定义,而非行为。没有装饰器,没有魔法。
typescript
// 所见即所得
const routes = [
{ method: 'GET', path: '/users/:id', handler: getUser }
]错误即数据 Errors are Data
错误包含状态、类型和可见性。不是混乱,而是契约。
typescript
return { data: { error: 'Not Found' }, status: 404 }组合优于约定 Composition Matters
中间件显式组合,执行顺序清晰可控,无全局污染。
typescript
{ path: '/admin', middleware: [auth, log], handler }边缘原生 Edge-Native
原生运行于 Bun、Workers、Deno —— 冷启动无忧。
typescript
export default { port: 3000, fetch: server.fetch }零样板代码 No Boilerplate
无 CLI,无配置文件夹。一个文件,即刻运行。
✨ 核心特性
- ✅ 结构优先的路由 — 用声明式对象定义整个 API,所见即所得
- ✅ 可组合的中间件 — 显式组合,无装饰器,无全局污染
- ✅ 结构化响应 —
{ data, status }统一格式,错误也是数据 - ✅ 内置响应工具 —
json()、html()、text()等,简洁统一 - ✅ 边缘原生 — Bun、Workers、Deno 即时冷启动,亚毫秒响应
- ✅ 零样板代码 — 无 CLI,无配置文件,一个文件即可运行
- ✅ 类型安全 — 路由、处理器、响应,全部 TypeScript 类型推断
🚀 技术特性
- 超高性能: 比 Express/Hono 快约 1.8x,达到 Elysia 86% 性能
- JIT 编译验证器: Schema 验证器编译缓存,10000 次验证仅需 ~5ms
- 中间件链预编译: 路由注册时预编译处理链,运行时零开销
- 快速请求解析: 优化的 Query/Cookie 解析,比标准方法快 2x
- 类型安全: 完整的 TypeScript 支持和自动类型推断
- 灵活中间件: 可组合的中间件架构,支持全局和路由级
- 零配置: 开箱即用,无需复杂配置
以下是在 Vafast 中的简单 hello world 示例。
typescript
import { Server, defineRoutes } from 'vafast'
interface TypedRequest extends Request {
params: Record<string, string>
}
const routes = defineRoutes([
{
method: 'GET',
path: '/',
handler: () => 'Hello Vafast'
},
{
method: 'GET',
path: '/user/:id',
handler: (req) => {
const { id } = (req as TypedRequest).params
return `User ID: ${id}`
}
},
{
method: 'POST',
path: '/form',
handler: async (req) => {
const body = await req.json()
return { success: true, data: body }
}
}
])
const server = new Server(routes)
export default { fetch: server.fetch }打开 localhost:3000,结果应该显示 'Hello Vafast'。
TIP
这是一个简单的示例,展示了 Vafast 的基本用法。在实际项目中,你可以根据需要添加更多的路由和中间件。
性能
基于多项核心优化,Vafast 提供卓越的性能表现:
| 框架 | RPS | 相对性能 |
|---|---|---|
| Elysia | ~118K | 100% |
| Vafast | ~101K | 86% |
| Express | ~56K | 48% |
| Hono | ~56K | 47% |
测试环境:Bun 1.2.20, macOS, wrk 基准测试 (4线程, 100连接, 30s)
性能优化技术
- JIT 编译验证器: TypeBox Schema 编译后缓存,避免重复编译开销
- 中间件链预编译: 路由注册时预编译完整处理链,每次请求仅需 0.004ms
- 快速请求解析:
parseQueryFast、getCookie等优化函数,比标准方法快 2x - Radix Tree 路由: O(k) 时间复杂度的高效路由匹配
TypeScript
Vafast 旨在帮助你编写更少的 TypeScript。
通过提供完整的类型定义和类型推断,Vafast 让你能够:
- 获得完整的类型安全
- 减少类型注解的需求
- 享受更好的开发体验
- 避免运行时类型错误
架构特点
Vafast 采用现代化的架构设计:
路由驱动
- 清晰的路由配置
- 支持嵌套路由
- 灵活的参数处理
- 自动路由冲突检测
中间件系统
- 可组合的中间件
- 支持异步操作
- 错误处理机制
- 全局和路由级中间件
类型安全
- 完整的 TypeScript 支持
- 自动类型推断
- 编译时错误检查
- Schema 验证支持
高性能路由
- 智能路径匹配算法
- 路由特异性排序
- 扁平化嵌套路由
- 优化的中间件链
下一步
现在您已经了解了 Vafast 的基本概念,建议您:
如果您有任何问题,欢迎在我们的 GitHub Issues 社区询问。
