CloudflareWorkers框架集成 workers-frameworks

该技能涉及在 Cloudflare Workers 无服务器计算平台上集成和部署现代 Web 框架,以构建高性能的全栈应用程序。它支持路由管理、服务器端渲染(SSR)、静态资产处理和边缘部署,适用于开发 API、轻量级应用、内容网站以及各种前端框架(如 React、Vue、Svelte)的项目。关键词包括:Cloudflare Workers、框架集成、无服务器、SSR、边缘计算、Hono、Remix、Next.js、Astro、SvelteKit、Qwik、Nuxt。

Serverless 0 次安装 0 次浏览 更新于 3/8/2026

name: workers-frameworks description: Cloudflare Workers 的框架集成。在 Workers 上使用 Hono、Remix、Next.js、Astro、SvelteKit、Qwik 或 Nuxt 构建时使用。涵盖路由、SSR、静态资产和边缘部署。 version: 1.0.0

Workers 框架集成

使用现代框架在 Cloudflare Workers 上构建全栈应用程序。

快速开始:选择您的框架

框架 最适合 SSR 静态 Workers 原生
Hono API、轻量级应用 ✅ 原生
Remix 全栈应用 ✅ 适配器
Next.js React 应用 ⚠️ OpenNext
Astro 内容网站 ✅ 适配器
SvelteKit Svelte 应用 ✅ 适配器
Qwik 可恢复应用 ✅ 适配器
Nuxt Vue 应用 ✅ Nitro

框架决策树

需要仅 API 吗?
  └─ 是 → Hono(最快、最小)
  └─ 否 → 构建全栈应用?
           └─ React → Next.js(OpenNext)或 Remix
           └─ Vue → Nuxt
           └─ Svelte → SvelteKit
           └─ 内容为主 → Astro
           └─ 最大性能 → Qwik

前 10 个框架错误

错误 框架 原因 解决方案
No matching export "default" 所有 错误的导出格式 使用 export default app 而不是 module.exports
Worker exceeded CPU limit Next.js 重度 SSR 使用 ISR,减少捆绑包大小
Cannot read properties of undefined (reading 'env') Remix 缺少上下文 context 传递给 loader/action
globalThis is not defined 所有 Node.js 全局变量 使用 nodejs_compat 标志
Dynamic require not supported 所有 CJS 在 ESM 中 转换为 ESM 导入
Response body is locked 所有 响应体已读取 在读取前克隆响应
Bindings not available 所有 缺少 wrangler 配置 在 wrangler.jsonc 中添加绑定
404 on static assets 所有 错误的资产配置 在 wrangler.jsonc 中配置 assets
Hydration mismatch React/Vue 服务器/客户端不一致 确保渲染一致
Maximum call stack exceeded 所有 循环导入 重构模块结构

Hono 快速开始(推荐)

// src/index.ts
import { Hono } from 'hono';
import { cors } from 'hono/cors';
import { logger } from 'hono/logger';

interface Env {
  DB: D1Database;
  KV: KVNamespace;
}

const app = new Hono<{ Bindings: Env }>();

// 中间件
app.use('*', logger());
app.use('/api/*', cors());

// 路由
app.get('/', (c) => c.text('Hello Workers!'));

app.get('/api/users', async (c) => {
  const { results } = await c.env.DB.prepare('SELECT * FROM users').all();
  return c.json(results);
});

app.post('/api/users', async (c) => {
  const { name, email } = await c.req.json();
  await c.env.DB.prepare('INSERT INTO users (name, email) VALUES (?, ?)')
    .bind(name, email)
    .run();
  return c.json({ success: true }, 201);
});

export default app;
// wrangler.jsonc
{
  "name": "my-app",
  "main": "src/index.ts",
  "compatibility_date": "2024-12-01",
  "compatibility_flags": ["nodejs_compat"],
  "d1_databases": [
    { "binding": "DB", "database_name": "my-db", "database_id": "xxx" }
  ]
}

静态资产配置

// wrangler.jsonc - 提供静态文件
{
  "name": "my-app",
  "main": "src/index.ts",
  "assets": {
    "directory": "./public",
    "binding": "ASSETS"
  }
}
// 使用应用回退提供静态文件
import { Hono } from 'hono';

const app = new Hono<{ Bindings: { ASSETS: Fetcher } }>();

// API 路由
app.get('/api/*', apiHandler);

// 静态资产回退
app.get('*', async (c) => {
  return c.env.ASSETS.fetch(c.req.raw);
});

export default app;

何时加载参考资料

用户需要时加载特定框架参考资料:

参考资料 加载时机
references/hono.md 构建 API、微服务或轻量级应用时
references/remix.md 使用加载器/操作的全栈 React 应用时
references/nextjs.md 通过 OpenNext 在 Workers 上使用 Next.js App Router 时
references/astro.md 构建内容网站、博客、文档或营销页面时
references/sveltekit.md 在 Workers 上构建 Svelte 应用时
references/qwik.md 构建可恢复应用、即时加载时
references/nuxt.md 使用 Nitro 构建 Vue 3 应用时

跨框架的通用模式

环境绑定访问

// Hono
app.get('/', (c) => c.env.DB.prepare('...'));

// Remix
export async function loader({ context }) {
  return context.cloudflare.env.DB.prepare('...');
}

// Astro
const db = Astro.locals.runtime.env.DB;

// SvelteKit
export async function load({ platform }) {
  return platform.env.DB.prepare('...');
}

// Nuxt
const { cloudflare } = useRuntimeConfig();
// 或通过 nitro:event.context.cloudflare.env.DB

错误处理模式

// 通用错误边界模式
app.onError((err, c) => {
  console.error(`[${c.req.path}] ${err.message}`);

  if (err instanceof HTTPException) {
    return err.getResponse();
  }

  return c.json(
    { error: 'Internal Server Error' },
    500
  );
});

性能提示

  1. 捆绑包大小:保持压缩后小于 1MB
  2. 冷启动:最小化顶级代码
  3. 流式处理:可用时使用流式 SSR
  4. 缓存:利用 Cache API 和 CDN
  5. 代码拆分:路由的动态导入

另请参阅

  • workers-performance - 优化技术
  • workers-runtime-apis - Workers API 参考
  • cloudflare-worker-base - 基本 Workers 设置