跳转到内容

应用创建

createApp 是 VentoStack 应用的入口点,基于 Bun.serve() 构建高性能 HTTP 服务器。

import { createApp } from "@ventostack/core";
const app = createApp({ port: 3000 });
await app.listen();
interface AppConfig {
port?: number; // 监听端口,默认 3000
host?: string; // 监听地址,默认 "0.0.0.0"
development?: boolean; // 开发模式,启用详细错误信息
}

使用 app.use() 注册中间件,按注册顺序执行:

import { createApp, createRouter, requestLogger, errorHandler } from "@ventostack/core";
const app = createApp({ port: 3000 });
// 内置中间件(建议最先注册 errorHandler,再注册 requestLogger)
app.use(errorHandler());
app.use(requestLogger());
// 注册路由
const router = createRouter();
router.get("/", async (ctx) => ctx.json({ ok: true }));
app.use(router);
await app.listen();
const app = createApp({ port: 3000 });
// 服务器启动后触发
app.lifecycle.onAfterStart(() => {
console.log("Server started on port 3000");
});
// 服务器关闭前触发
app.lifecycle.onBeforeStop(async () => {
await db.close();
console.log("Database connection closed");
});
await app.listen();

VentoStack 会自动处理 SIGINTSIGTERM 信号,在关闭前触发 onStop 回调:

const app = createApp({ port: 3000 });
app.lifecycle.onBeforeStop(async () => {
// 等待正在处理的请求完成
await drainConnections();
// 关闭数据库连接
await db.close();
});
await app.listen();
interface VentoStackApp {
use(item: Middleware | Router | Plugin): VentoStackApp;
listen(port?: number): Promise<void>;
close(): Promise<void>;
readonly router: Router;
readonly lifecycle: Lifecycle;
}