适配器
orva 以 app.fetch(request) 为统一运行时入口,再通过子模块适配到不同平台。
平台总览
| 平台 | 导出 | 适用场景 |
|---|---|---|
| Node.js | serveNode | 常规服务器、容器、PM2、systemd |
| Deno | serveDeno createDenoHandler | Deno 原生 HTTP 服务 |
| Bun | serveBun createBunHandler | Bun 原生高性能服务 |
| Cloudflare | createCloudflareWorker createCloudflareWorkerWithEnv createPagesFunction createDefaultWorker | Workers / Pages |
| AWS Lambda | createAWSLambdaHandler | API Gateway + Lambda |
| Netlify | createNetlifyFunctionHandler createNetlifyEdgeHandler | Function / Edge Function |
| Azure | createAzureFunctionHandler createAzureFetchHandler | Azure Functions |
| Vercel | createVercelEdgeHandler createAppRouteHandler | Edge / App Router |
Node.js
ts
import { createOrva } from 'orvajs';
import { serveNode } from 'orvajs/adapters/node';
const app = createOrva().get('/', (c) => c.text('hello from node'));
serveNode(app, { port: 3000 });js
import { createOrva } from "orvajs";
import { serveNode } from "orvajs/adapters/node";
const app = createOrva().get("/", (c) => c.text("hello from node"));
serveNode(app, { port: 3e3 });Deno
ts
import { createOrva } from 'orvajs';
import { serveDeno } from 'orvajs/adapters/deno';
const app = createOrva().get('/', (c) => c.text('hello from deno'));
serveDeno(app, { port: 8000 });js
import { createOrva } from "orvajs";
import { serveDeno } from "orvajs/adapters/deno";
const app = createOrva().get("/", (c) => c.text("hello from deno"));
serveDeno(app, { port: 8e3 });Bun
ts
import { createOrva } from 'orvajs';
import { serveBun } from 'orvajs/adapters/bun';
const app = createOrva().get('/', (c) => c.text('hello from bun'));
serveBun(app, { port: 3000, development: true });js
import { createOrva } from "orvajs";
import { serveBun } from "orvajs/adapters/bun";
const app = createOrva().get("/", (c) => c.text("hello from bun"));
serveBun(app, { port: 3e3, development: true });Cloudflare Workers / Pages
ts
import { createOrva } from 'orvajs';
import {
createCloudflareWorker,
createPagesFunction,
} from 'orvajs/adapters/cloudflare';
const app = createOrva().get('/', (c) => c.text('hello from cloudflare'));
export default createCloudflareWorker(app);
export const onRequest = createPagesFunction(app);js
import { createOrva } from "orvajs";
import {
createCloudflareWorker,
createPagesFunction
} from "orvajs/adapters/cloudflare";
const app = createOrva().get("/", (c) => c.text("hello from cloudflare"));
var stdin_default = createCloudflareWorker(app);
const onRequest = createPagesFunction(app);
export {
stdin_default as default,
onRequest
};如果你只需要默认 worker 形式,也可以直接使用:
ts
import { createDefaultWorker } from 'orvajs/adapters/cloudflare';
export default createDefaultWorker(app);js
import { createDefaultWorker } from "orvajs/adapters/cloudflare";
var stdin_default = createDefaultWorker(app);
export {
stdin_default as default
};如果你需要保留 env 注入入口,可用:
ts
import { createCloudflareWorkerWithEnv } from 'orvajs/adapters/cloudflare';
export default createCloudflareWorkerWithEnv(app);js
import { createCloudflareWorkerWithEnv } from "orvajs/adapters/cloudflare";
var stdin_default = createCloudflareWorkerWithEnv(app);
export {
stdin_default as default
};AWS Lambda
ts
import { createOrva } from 'orvajs';
import { createAWSLambdaHandler } from 'orvajs/adapters/aws-lambda';
const app = createOrva().post('/echo', async (c) => c.json(await c.req.json()));
export const handler = createAWSLambdaHandler(app, {
baseUrl: 'https://api.example.com',
});js
import { createOrva } from "orvajs";
import { createAWSLambdaHandler } from "orvajs/adapters/aws-lambda";
const app = createOrva().post("/echo", async (c) => c.json(await c.req.json()));
const handler = createAWSLambdaHandler(app, {
baseUrl: "https://api.example.com"
});
export {
handler
};Netlify
ts
import { createOrva } from 'orvajs';
import {
createNetlifyFunctionHandler,
createNetlifyEdgeHandler,
} from 'orvajs/adapters/netlify';
const app = createOrva().get('/', (c) => c.text('hello from netlify'));
export const handler = createNetlifyFunctionHandler(app);
export default createNetlifyEdgeHandler(app);js
import { createOrva } from "orvajs";
import {
createNetlifyFunctionHandler,
createNetlifyEdgeHandler
} from "orvajs/adapters/netlify";
const app = createOrva().get("/", (c) => c.text("hello from netlify"));
const handler = createNetlifyFunctionHandler(app);
var stdin_default = createNetlifyEdgeHandler(app);
export {
stdin_default as default,
handler
};Azure Functions
ts
import { createOrva } from 'orvajs';
import { createAzureFunctionHandler } from 'orvajs/adapters/azure';
const app = createOrva().get('/', (c) => c.text('hello from azure'));
export default createAzureFunctionHandler(app);js
import { createOrva } from "orvajs";
import { createAzureFunctionHandler } from "orvajs/adapters/azure";
const app = createOrva().get("/", (c) => c.text("hello from azure"));
var stdin_default = createAzureFunctionHandler(app);
export {
stdin_default as default
};如果你的宿主已经给了标准 Request,可用:
ts
import { createAzureFetchHandler } from 'orvajs/adapters/azure';
export default createAzureFetchHandler(app);js
import { createAzureFetchHandler } from "orvajs/adapters/azure";
var stdin_default = createAzureFetchHandler(app);
export {
stdin_default as default
};Vercel
ts
import { createOrva } from 'orvajs';
import { createAppRouteHandler } from 'orvajs/adapters/vercel';
const app = createOrva().get('/api/hello', (c) => c.json({ ok: true }));
export const { GET, POST, PUT, DELETE, PATCH } = createAppRouteHandler(app);js
import { createOrva } from "orvajs";
import { createAppRouteHandler } from "orvajs/adapters/vercel";
const app = createOrva().get("/api/hello", (c) => c.json({ ok: true }));
const { GET, POST, PUT, DELETE, PATCH } = createAppRouteHandler(app);
export {
DELETE,
GET,
PATCH,
POST,
PUT
};选择建议
- 传统后端服务优先
serveNode - 单文件部署或高并发实验可选
serveBun - Edge / 全球分发优先 Cloudflare 或 Vercel
- 既有云函数体系按平台直接选对应 handler
所有适配器都建立在相同的应用层代码之上,因此建议把业务逻辑收敛到 app,平台入口只做一行接线。