08. Cloudflare 全栈落地:保持简洁

Cloudflare 部分维持第一版的重点:不是再讲一遍 Workers 入门,而是说明 TanStack Start 如何接入 Workers runtime 和 bindings。

官方路径

npm create cloudflare@latest -- my-tanstack-start-app --framework=tanstack-start
npm run dev
npm run deploy

已有项目接入 Cloudflare

npm 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 }
}

Bindings:为什么组合被推荐

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/SSRStatic assets + CDN cache
用户 dashboardRouter + Query + server functionsWorkers + D1/KV
文件上传server function mutationR2 binding
后台任务custom server entryQueues / Cron / Workflows
AI 功能server function boundaryWorkers AI / AI Gateway
现实判断:TanStack + Cloudflare 适合你想把 runtime、storage、edge cache 和 typed app boundary 组合起来的时候。它不是“Next.js 但免费”。如果你只是要最快上线一个成熟模板,Next/Vercel 仍然很难打。
快速判断

在 Cloudflare Workers 上访问 D1/R2/KV 的关键机制是什么?