快速入门
Vafast 是一个高性能、类型安全的 TypeScript Web 框架。内置 JIT 编译验证器、Radix Tree 路由等优化技术,比 Express/Hono 快约 1.8x。
使用脚手架(推荐)
最快的方式是使用官方脚手架:
bash
npx create-vafast-app按照提示输入项目名称,然后:
bash
cd my-vafast-app
npm install
npm run dev访问 localhost:3000 即可看到 "Hello Vafast!"。
手动配置
如果你想手动配置项目,请按以下步骤操作。
确保你已安装 Node.js(推荐版本 18+)。
1. 创建项目目录
bash
mkdir my-vafast-app
cd my-vafast-app
npm init -y2. 安装依赖
bash
npm install vafast
npm install -D typescript tsx @types/node3. 配置 TypeScript
创建 tsconfig.json:
json
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"outDir": "dist",
"rootDir": "src"
},
"include": ["src/**/*"]
}4. 配置 package.json
在 package.json 中添加:
json
{
"type": "module",
"scripts": {
"dev": "tsx watch src/index.ts",
"start": "tsx src/index.ts",
"build": "tsc",
"serve": "node dist/index.js"
}
}5. 创建 .gitignore
gitignore
# Dependencies
node_modules/
# Build output
dist/
# IDE
.idea/
.vscode/
# OS
.DS_Store
# Logs
*.log
# Environment
.env
.env.local6. 项目结构
my-vafast-app/
├── src/
│ └── index.ts
├── .gitignore
├── package.json
└── tsconfig.json创建应用
创建 src/index.ts,有两种写法:
方式一:使用 defineRoutes(推荐)
defineRoutes 提供更好的类型推断,适合复杂项目:
typescript
import { Server, defineRoute, defineRoutes, serve } from 'vafast'
const routes = defineRoutes([
defineRoute({
method: 'GET',
path: '/',
handler: () => 'Hello Vafast!'
}),
defineRoute({
method: 'GET',
path: '/health',
handler: () => ({ status: 'ok', timestamp: Date.now() })
})
])
const server = new Server(routes)
serve({
fetch: server.fetch,
port: 3000,
// 生产环境推荐启用优雅关闭
gracefulShutdown: true
}, () => {
console.log('Server running on http://localhost:3000')
})方式二:直接传数组
适合快速原型或简单项目:
typescript
import { Server, defineRoute, defineRoutes, serve } from 'vafast'
const routes = defineRoutes([
defineRoute({
method: 'GET',
path: '/',
handler: () => 'Hello Vafast!'
})
])
const server = new Server(routes)
serve({ fetch: server.fetch, port: 3000 })启动服务
bash
npm run dev访问 localhost:3000 应该会显示 "Hello Vafast"。
基础示例
简单路由
typescript
import { Server, defineRoute, defineRoutes, serve } from 'vafast'
const routes = defineRoutes([
defineRoute({
method: 'GET',
path: '/',
handler: () => 'Hello Vafast!'
}),
defineRoute({
method: 'GET',
path: '/users',
handler: () => ['user1', 'user2', 'user3']
})
])
const server = new Server(routes)
serve({ fetch: server.fetch, port: 3000 })带参数的路由
typescript
import { Server, defineRoute, defineRoutes, serve } from 'vafast'
const routes = defineRoutes([
defineRoute({
method: 'GET',
path: '/users/:id',
handler: ({ params }) => {
return `User ID: ${params.id}`
}
}),
defineRoute({
method: 'POST',
path: '/users',
handler: async ({ body }) => {
return { success: true, user: body }
}
})
])
const server = new Server(routes)
serve({ fetch: server.fetch, port: 3000 })使用 Schema 验证
typescript
import { Server, defineRoute, defineRoutes, serve, Type } from 'vafast'
const UserSchema = Type.Object({
name: Type.String({ minLength: 1 }),
email: Type.String({ format: 'email' }),
age: Type.Optional(Type.Number({ minimum: 0 }))
})
const routes = defineRoutes([
defineRoute({
method: 'POST',
path: '/users',
schema: { body: UserSchema },
handler: ({ body }) => {
// body 已验证并自动推导类型
return { success: true, user: body }
}
})
])
const server = new Server(routes)
serve({ fetch: server.fetch, port: 3000 })下一步
现在你已经成功创建了一个 Vafast 应用!接下来你可以: