应用创建
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 会自动处理 SIGINT 和 SIGTERM 信号,在关闭前触发 onStop 回调:
const app = createApp({ port: 3000 });
app.lifecycle.onBeforeStop(async () => { // 等待正在处理的请求完成 await drainConnections(); // 关闭数据库连接 await db.close();});
await app.listen();VentoStackApp 接口
Section titled “VentoStackApp 接口”interface VentoStackApp { use(item: Middleware | Router | Plugin): VentoStackApp; listen(port?: number): Promise<void>; close(): Promise<void>; readonly router: Router; readonly lifecycle: Lifecycle;}