返回项目目录
前端框架精选项目

SolidStart

SolidJS 官方全栈框架,提供文件路由、Server Functions、流式 SSR 与多平台部署。

主要语言TypeScript
开源许可MIT
项目类型前端框架
维护状态活跃维护
OVERVIEW

项目概述

SolidStart 将 Solid 的细粒度响应式扩展到完整应用,通过 Solid Router、Server Functions、API Routes 和多种渲染模式构建高性能全栈 Web 产品。

SolidStart 是 SolidJS 官方 Meta-framework,负责把 UI 组件、路由、服务端数据和部署输出组合为完整应用。它使用 src/routes 生成 UI Route 与 API Route,Solid Router 负责嵌套路由、预加载和客户端导航;query 与 createAsync 用于读取数据,action 与 Server Function 用于写入数据,并通过 "use server" 指令确保数据库、私密变量和授权逻辑只在服务器执行。页面可采用客户端渲染、服务端渲染、流式 SSR 或静态生成,Solid 的细粒度响应式会让浏览器只更新真正依赖变化的 DOM。底层工具链结合 Vite 与服务端运行时能力,并通过部署 Preset 面向 Node、Netlify、Vercel、AWS、Cloudflare 等环境。当前官方文档已增加 SolidStart 2.0 分支,将配置统一迁移到 vite.config.ts 和 solidStart() 插件;与此同时,npm 稳定生态仍有大量 1.x 项目,因此新项目和升级项目都应先确认实际脚手架版本。

当前文档SolidStart 2.0
界面基础Solid + Solid Router
配置入口Vite Plugin
FEATURES

主要特点

SolidStart 将 Solid 的精确响应式、同构路由和服务端函数结合起来,为页面、数据和部署提供轻量的全栈基础。

01

Solid 细粒度响应式

Signal、Memo 和 Resource 精确追踪依赖,状态变化直接更新相关 DOM,而不是重复执行整棵组件树或进行虚拟 DOM Diff。

02

同构文件路由

src/routes 中的 TSX 或 MDX 文件生成 UI Route,支持嵌套布局、动态参数、可选参数、Catch-all 与 Route Groups。

03

Query 与预加载

query 为服务端数据建立稳定键,createAsync 在组件中读取结果,route.preload 可在导航前启动请求并与 Suspense 协作。

04

Action 与 Server Functions

通过 action 处理数据写入,"use server" 将函数转换为安全的服务端调用边界,并可结合重定向和查询重新验证。

05

完整 API Routes

路由文件导出 GET、POST、PATCH 或 DELETE 即可创建 Endpoint,适合 REST API、Webhook、OAuth Callback 与非 HTML 响应。

06

多种渲染模式

支持 CSR、同步或异步 SSR、流式 SSR 与 SSG,可根据内容、交互和托管条件选择合适的交付方式。

07

服务端 HTTP 能力

@solidjs/start/http 提供 Cookie、Session、请求和响应辅助方法,Middleware 可传递请求级上下文并统一处理认证。

08

Vite 配置与部署 Preset

SolidStart 2.0 通过 solidStart() Vite Plugin 配置应用,并为 Node、Serverless、Edge 和主流云平台准备构建输出。

USE CASES

适用场景

适合偏好 JSX 与 Signal、重视客户端更新效率,并希望使用一套 TypeScript 代码覆盖 SSR、API 和交互界面的团队。

高交互 SaaS

细粒度更新适合仪表盘、编辑器、协作工具和包含大量独立交互状态的产品界面。

数据驱动型网站

query、createAsync、Suspense 与服务端渲染适合目录、搜索、报表和实时状态页面。

电商与会员产品

服务端函数可承载账户、购物车和订单逻辑,SSR 与静态生成兼顾商品内容、SEO 和交互体验。

内容和文档站

文件路由、MDX、SSG 与流式 SSR 可用于博客、文档、营销站和需要局部互动的内容页面。

TypeScript BFF 应用

页面、Server Functions 与 API Routes 可共享类型和业务模块,适合作为前端专用后端连接数据库或外部服务。

跨平台部署项目

部署 Preset 支持多种 Node、Serverless 和 Edge 环境,适合希望保留托管平台选择权的团队。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

SolidStart 擅长的地方

  • 继承 Solid 的细粒度响应式,客户端更新精确且无需虚拟 DOM
  • JSX、路由预加载和 Server Functions 形成连贯的 TypeScript 开发体验
  • query 与 action 把读取、写入、缓存键和重新验证组织在路由数据层
  • 同时支持 CSR、SSR、流式渲染和静态生成,适配多类网站
  • API Route 使用标准 HTTP 方法与 Request/Response,适合外部客户端和 Webhook
  • 框架保持相对精简,不强制绑定特定数据库、认证或 UI 组件库
  • Vite 工具链和多平台 Preset 为开发速度与部署可移植性提供基础

需要注意

采用前应考虑的问题

需要先掌握 Solid

Signal Getter、组件只执行一次、资源与响应式所有权不同于 React,照搬 Hooks 和组件重渲染思维容易产生错误。

正处于版本迁移期

官方已有 v2 文档,而大量现有项目和 npm 稳定生态仍使用 v1;配置文件、包入口和升级步骤必须与实际版本匹配。

生态与资料相对较少

企业组件、认证示例、平台集成和人才储备少于 Next.js 或 Nuxt,复杂问题可能需要阅读源码、Issue 与 Router 文档。

服务端指令依赖编译转换

"use server" 函数看起来像本地调用,但会跨越网络和序列化边界;参数、错误、延迟和幂等性仍需按远程调用设计。

SSR 环境需要显式区分

浏览器 API 不能在服务端执行,数据库和秘密也不能进入客户端 Bundle;同构代码必须明确运行环境与副作用。

数据失效策略需要设计

query 键、preload、action 后重新验证和导航缓存彼此关联,复杂写入流程应验证过期数据和并发提交行为。

服务端渲染仍可能发送客户端代码

SSR 改善首屏并不等于零 JavaScript;应测量 Hydration、第三方依赖和高交互页面的真实包体与启动成本。

部署 Preset 无法统一平台限制

文件系统、数据库连接、流式响应、冷启动和 Edge API 仍取决于目标环境,切换平台前需要端到端验证。

安全边界需自行落实

Action、API Route 和 Server Function 必须验证输入、执行授权、保护 Session,并避免把私密数据序列化到页面。

QUICK START

快速开始

按照 SolidStart 2.0 文档创建项目,并使用文件路由、query、Server Function、action 和 API Route 构建项目目录。

1创建 SolidStart 项目
bash
npm create solid@latest solidstart-catalog
cd solidstart-catalog
npm install
npm run dev
2配置 SolidStart 2.0
typescript
import { solidStart } from "@solidjs/start/config";
import { defineConfig } from "vite";

export default defineConfig({
  plugins: [solidStart()],
});
3创建服务端 Query 与页面
tsx
import {
  createAsync,
  query,
  type RouteDefinition,
} from "@solidjs/router";
import { For, Suspense } from "solid-js";

const getProjects = query(async () => {
  "use server";

  return [
    { id: "1", name: "SolidStart" },
    { id: "2", name: "SolidJS" },
  ];
}, "projects");

export const route = {
  preload: () => getProjects(),
} satisfies RouteDefinition;

export default function ProjectsPage() {
  const projects = createAsync(() => getProjects());

  return (
    <main>
      <h1>开源项目</h1>
      <Suspense fallback={<p>正在加载…</p>}>
        <ul>
          <For each={projects()}>
            {(project) => <li>{project.name}</li>}
          </For>
        </ul>
      </Suspense>
    </main>
  );
}
4使用 Action 写入数据
tsx
import {
  action,
  redirect,
  useSubmission,
} from "@solidjs/router";

const createProject = action(async (formData: FormData) => {
  "use server";

  const name = String(formData.get("name") ?? "").trim();
  if (!name || name.length > 80) {
    throw new Error("项目名称不合法");
  }

  // 在这里写入数据库,并执行当前用户的授权检查
  throw redirect("/projects");
}, "create-project");

export function CreateProjectForm() {
  const submission = useSubmission(createProject);

  return (
    <form action={createProject} method="post">
      <input name="name" required maxlength="80" />
      <button disabled={submission.pending}>
        {submission.pending ? "正在保存…" : "添加项目"}
      </button>
    </form>
  );
}
5添加 API Route
typescript
import type { APIEvent } from "@solidjs/start/server";

export async function GET({ params }: APIEvent) {
  return Response.json({
    id: params.id,
    name: "SolidStart",
  });
}

下一步:SolidStart 处于 v1 到 v2 的过渡阶段,执行脚手架后应以生成项目的 package.json 和对应版本文档为准;不要直接把旧版 app.config.ts 配置复制到 v2 的 vite.config.ts。

ALTERNATIVES

类似项目

这些应用框架同样提供同构路由、服务端数据和多种渲染模式,但组件响应式、表单模型与部署工具链不同。

COMPARISON

SolidStart vs SvelteKit

SolidStart 与 SvelteKit 都是编译器驱动 UI 生态的官方全栈框架,支持文件路由、SSR、服务端数据与多平台部署。SolidStart 使用 JSX、细粒度 Signal 和 query/action;SvelteKit 使用 .svelte 组件、Load、Form Actions 与 + 文件约定。

比较维度SolidStartSvelteKit
界面基础Solid、JSX/TSX 与细粒度 SignalSvelte 5、单文件组件与 Runes
路由文件src/routes 中的 TSX/MDX 与 HTTP 方法导出+page、+layout、+server 及其 .server 变体
数据读取query、createAsync、route.preload 与 Suspense通用/服务端 Load 与生成的 PageData
数据写入action、useSubmission 与 Server FunctionForm Actions、fail 与 use:enhance
响应式更新Signal 依赖直接更新对应 DOMSvelte 编译器与 Runes 生成更新逻辑
渐进增强Action 可使用原生 form,具体体验依路由方案Form Actions 明确以无 JavaScript 表单为核心
部署工具Vite 配置与 SolidStart 部署 PresetVite 构建与平台 Adapter
更适合偏好 JSX、Signal 和精确更新模型的团队偏好 HTML 风格组件和渐进增强表单的团队
如何选择

如果团队喜欢 JSX,又希望获得 Signal 的细粒度更新、路由 Query 与类型化 Server Functions,SolidStart 很有吸引力;如果更偏好接近 HTML 的组件语法、成熟的 Load/Form Actions 约定和更完整的 Adapter 文档,SvelteKit 通常更稳妥。SolidStart 目前还需额外评估 v1/v2 迁移、关键生态和目标平台支持。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 26 日
核验版本官方当前稳定版与文档主线
内容维护Docs100 编辑整理
项目维护状态活跃维护

本次核验覆盖 SolidStart 的核心定位、主要能力、官方入口与开源许可。项目版本持续更新,具体补丁版本、兼容性和迁移要求请在采用前继续核对官方发布记录。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 7 月 25 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 25 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库