solidjs/solid
开发工具把 JSX 编译成真实 DOM 并用细粒度响应式更新的 JavaScript UI 库。
项目介绍
Solid 是一个用于构建用户界面的声明式 JavaScript/TypeScript 库。它不使用虚拟 DOM,而是把 JSX 模板编译成真实 DOM 节点,并通过细粒度响应式依赖更新:某个 signal 变化时,只重跑读取它的代码。组件就是普通函数,只在初始化视图时执行一次,因此 <div> 是真实的 div,可以直接用浏览器开发者工具检查。
它提供现代 UI 库常见的框架能力,包括 JSX 与 Fragment、Context、Store、配合 Suspense 和并发渲染的 Resource、流式 SSR、渐进式 hydration 以及 Error Boundary。组件可在客户端和服务端同构渲染,支持自定义渲染器,也可以用来编写 Web Component。
快速使用
用 degit 基于 Vite 创建最小客户端渲染应用,然后安装依赖并启动开发服务器:
npx degit solidjs/templates/js my-app
cd my-app
npm i
npm run dev
需要 TypeScript 时,把模板换成 npx degit solidjs/templates/ts my-app。Yarn 和 pnpm 同样可用。
在已有工程中通过 JSX 使用 Solid,需要安装 solid-js 和 Babel preset:
npm i -D babel-preset-solid
npm i solid-js
随后在 Babel 配置中加入 "presets": ["solid"];TypeScript 项目需在 compilerOptions 中设置 "jsx": "preserve" 和 "jsxImportSource": "solid-js"。README 没有给出模板之外完整的 Vite 或 webpack 配置,非模板方式请以官方文档为准。最小示例基于 createSignal 和 render,可以在 playground 中直接运行,无需本地安装。
使用约束
SolidJS Core 支持最近两年的主流桌面与移动浏览器:Firefox、Safari、Chrome 和 Edge,不支持 IE 及同类已停止维护的浏览器。服务端环境支持 Node LTS 以及最新版 Deno 和 Cloudflare Worker 运行时。使用 JSX 依赖 Babel preset,TypeScript 项目必须把 jsxImportSource 指向 solid-js。项目采用 MIT 许可证。
HotRepo 点评
2026-11-06 的 TypeScript 日榜记录了 36,258 个 Star 和 139 个新增 Star,当日最好名次为第 3;已收集的数据中没有该仓库的全部语言日榜名次。Hacker News 上的讨论集中在版本发布:2026 年 8 月的 2.0 RC 帖子获得 10 分、没有评论,2026 年 3 月的 2.0 beta 帖子有一条评论,提到一等公民的异步能力、createOptimistic 和 createOptimisticStore 等乐观更新原语,以及更可预测的调度器。这些属于发布消息和读者概述,不是独立基准测试。能观察到的是:一个成熟的 1.x 库正在推进 2.0 预发布,而该快照的日榜数据说明它仍有持续关注度。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。