• 产品简介
  • 快速开始
    • 导入 Git 仓库
    • 从模板开始
    • 直接上传
    • 从 AI 开始
  • 框架指南
    • 前端
      • Vite
      • React
      • Vue
      • 其他框架
    • 后端
    • 全栈
      • Next.js
      • Nuxt
      • Astro
      • React Router
      • SvelteKit
      • TanStack Start
      • Vike
    • 自定义 404 页面
  • 项目指南
    • 项目管理
    • edgeone.json
    • 缓存配置
    • 错误码
  • 构建指南
  • 部署指南
    • 概览
    • 触发部署
    • 管理部署
    • 部署按钮
    • 使用 Github Action
    • 使用 CNB 插件
    • 使用 IDE 插件
    • 使用 CodeBuddy IDE
  • 域名管理
    • 概览
    • 自定义域名
    • 配置 HTTPS 证书
      • 概览
      • 申请免费证书
      • 使用 SSL 托管证书
    • 配置 DNS 的 CNAME 记录
  • 可观测性
    • 概览
    • 指标分析
    • 日志分析
  • Pages Functions
    • 概览
    • Edge Functions
    • Cloud Functions
      • 概览
      • Node Functions
  • 中间件
  • KV 存储
  • 边缘 AI
  • API Token
  • EdgeOne CLI
  • Pages MCP
  • 消息通知
  • 集成指南
    • AI
      • 对话型大模型集成
      • 图片大模型集成
    • 数据库
      • Supabase 集成
      • Pages KV 集成
    • 电商
      • Shopify 集成
      • WooCommerce 集成
    • 支付
      • Stripe 集成
      • Paddle 集成
    • CMS
      • WordPress 集成
      • Contentful 集成
      • Sanity 集成
      • Payload 集成
    • 身份验证
      • Supabase 集成
      • Clerk 集成
  • 最佳实践
    • 使用通用大模型快速搭建 AI 应用
    • 使用边缘 AI 模型快速搭建对话型 AI 站点
    • 使用 Shopify 搭建电商平台
    • 使用 Supabase 和 Stripe 搭建 SaaS 站点
    • 如何快速搭建公司品牌站点
    • 如何快速搭建博客站点
  • 迁移指南
    • 从 Vercel 迁移至 EdgeOne Pages
    • 从 Cloudflare Pages 迁移至 EdgeOne Pages
    • 从 Netlify 迁移至 EdgeOne Pages
  • 排障指南
  • 常见问题
  • 联系我们
  • 产品动态

TanStack Start

TanStack Start 是一个基于 TanStack Router 构建的全栈 Web 框架,目前已支持 React 和 Solid。它结合 Vite 构建能力,提供类型安全路由、服务端渲染(SSR)、流式传输、服务端函数(Server Functions)等功能,让您能够构建高性能的全栈 Web 应用。
注意:
目前 Pages 支持 TanStack Start 1.0+ 版本,可实现全栈部署。

核心特点

类型安全路由:完整的 TypeScript 支持,路由参数和数据加载都具有类型推断。
全栈框架:支持服务端渲染、API 路由和前后端一体化开发。
文件式路由:基于文件系统的路由约定,自动生成路由树。
数据加载:内置 loader 机制,支持服务端数据获取。
流式渲染:支持 React 18 Suspense 和流式 SSR。

快速开始

您可以通过以下方式在 EdgeOne Pages 上部署 TanStack Start 项目:
通过 Git 仓库导入 TanStack Start 项目
从 Pages 的模板库选择 TanStack Start 模板
使用 @edgeone/tanstack-start 框架适配器部署本地项目
了解 TanStack Start 在 Pages 的部署表现,可以点击下方的示例模板:


Pages 对 TanStack Start 的支持

TanStack Start 特性
支持情况
Server-Side Rendering (SSR)
Static Site Generation (SSG)
Single Page Application (SPA)
Route Loaders
Server Functions
File-based Routing
Streaming

在 Pages 部署 TanStack Start 项目

@edgeone/tanstack-start 是专为 Pages 平台设计的 Vite 插件,可自动将 TanStack Start 应用构建为 Pages 部署产物。结合 Pages 脚手架,实现 TanStack Start 项目的快速部署。
要在 Pages 部署 TanStack Start 项目,可以参考以下操作步骤。

1. 安装适配器

npm install @edgeone/tanstack-start

2. 配置 Vite

vite.config.ts 中引入并使用 @edgeone/tanstack-start
import { defineConfig } from "vite";
import { tanstackStart } from "@tanstack/react-start/plugin/vite";
import viteReact from "@vitejs/plugin-react";
import edgeoneAdapter from "@edgeone/tanstack-start";

export default defineConfig({
plugins: [
tanstackStart(),
viteReact(),
edgeoneAdapter(), // Add the Edgeone adapter
],
});

3. 部署项目

Git 连接部署
集成好适配器后,将项目提交到 GitHub 或 GitLab,然后使用 Git 连接部署
CLI 部署
安装 Pages 的脚手架工具(参考 EdgeOne CLI),配置完成后使用命令部署:
edgeone pages deploy
注意:
当前适配器暂不支持与 Nitro 插件同时使用。如需使用 Nitro,请等待 EdgeOne Pages 官方 preset 发布。

服务端渲染 (SSR)

TanStack Start 默认启用 SSR。通过 loader 函数在服务端获取数据。
// app/routes/posts.$postId.tsx
import { createFileRoute } from "@tanstack/react-router";

export const Route = createFileRoute("/posts/$postId")({
loader: async ({ params }) => {
const post = await fetchPost(params.postId);
return { post };
},
component: PostComponent,
});

function PostComponent() {
const { post } = Route.useLoaderData();
return (
<article>
<h1>{post.title}</h1>
<div>{post.content}</div>
</article>
);
}

静态站点生成 (SSG)

支持在构建时预渲染静态页面。
// app/routes/about.tsx
import { createFileRoute } from "@tanstack/react-router";

export const Route = createFileRoute("/about")({
// Static data pre-rendered at build time
loader: () => ({
title: "About Us",
description: "Learn more about our company.",
}),
component: AboutComponent,
});

function AboutComponent() {
const data = Route.useLoaderData();
return (
<div>
<h1>{data.title}</h1>
<p>{data.description}</p>
</div>
);
}

Server Functions

TanStack Start 支持服务端函数,可在服务器上执行敏感操作。
// app/routes/api.ts
import { createServerFn } from "@tanstack/react-start/server";

export const getServerTime = createServerFn().handler(async () => {
return new Date().toISOString();
});

export const createUser = createServerFn()
.validator((data: { name: string; email: string }) => data)
.handler(async ({ data }) => {
// Execute a database operation on the server
const user = await db.users.create(data);
return user;
});

流式渲染

支持通过 React 18 的 Suspense 实现流式渲染,逐步传输页面内容。
import { Suspense } from "react";
import { createFileRoute, Await } from "@tanstack/react-router";

export const Route = createFileRoute("/dashboard")({
// Return Promises without awaiting
loader: () => ({
posts: fetchPosts(),
stats: fetchStats(),
}),
component: DashboardComponent,
});

function DashboardComponent() {
const { posts, stats } = Route.useLoaderData();

return (
<div>
<Suspense fallback={<p> Loading posts... </p>}>
<Await promise={posts}>{(data) => <PostList posts={data} />}</Await>
</Suspense>
<Suspense fallback={<p> Loading stats... </p>}>
<Await promise={stats}>{(data) => <StatsPanel stats={data} />}</Await>
</Suspense>
</div>
);
}

更多资源

ai-agent
你可以这样问我
如何开始使用 EdgeOne Pages?