Cloudflare 部分维持第一版的重点:不是再讲一遍 Workers 入门,而是说明 TanStack Start 如何接入 Workers runtime 和 bindings。
npm create cloudflare@latest -- my-tanstack-start-app --framework=tanstack-start
npm run dev
npm run deploynpm i -D @cloudflare/vite-plugin wrangler// vite.config.ts
import { defineConfig } from 'vite'
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
import { cloudflare } from '@cloudflare/vite-plugin'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [
cloudflare({ viteEnvironment: { name: 'ssr' } }),
tanstackStart(),
react(),
],
})// wrangler.jsonc
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "my-tanstack-start-app",
"compatibility_date": "2026-07-07",
"compatibility_flags": ["nodejs_compat"],
"main": "@tanstack/react-start/server-entry",
"observability": { "enabled": true }
}TanStack server-side code 可以访问 Cloudflare bindings。于是 server functions/loaders 可以直接使用 D1、R2、KV、Queues、AI 等资源。
import { createServerFn } from '@tanstack/react-start'
import { env } from 'cloudflare:workers'
export const getProfile = createServerFn().handler(async () => {
return env.DB.prepare('select * from profiles where id = ?')
.bind('me')
.first()
})| 需求 | TanStack 部分 | Cloudflare 部分 |
|---|---|---|
| 公开内容页 | Start prerender/SSR | Static assets + CDN cache |
| 用户 dashboard | Router + Query + server functions | Workers + D1/KV |
| 文件上传 | server function mutation | R2 binding |
| 后台任务 | custom server entry | Queues / Cron / Workflows |
| AI 功能 | server function boundary | Workers AI / AI Gateway |
在 Cloudflare Workers 上访问 D1/R2/KV 的关键机制是什么?