关于 spacetimedb-client-typescript
面向 TypeScript 和 JavaScript 客户端开发的 SpacetimeDB 技能,涵盖生成绑定、订阅、Reducer 和 React 用法。
主要功能
- 01生成 TypeScript 绑定
- 02查询构建器与订阅
- 03Reducer 调用方式
- 04React Provider 与 Hooks
- 05SDK 包迁移指引
适用场景
- 01开发 TypeScript 或 JavaScript 客户端
- 02按需订阅表数据并控制生命周期
- 03在 React 中使用 SpacetimeDB 数据和 Reducer
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ danmossa/ spacetimedb-skills --skill spacetimedb-client-typescript安装后在 Claude Code 中输入/spacetimedb-client-typescript确认已加载。
附带文件references/clients-typescript.md
详细介绍
将此技能用于 TypeScript 和 JavaScript 客户端实现。
TypeScript 核心模式
将绑定生成到客户端源代码树中,然后从该路径导入生成的名称:
spacetime generate --lang typescript --out-dir client/src/module_bindings --module-path spacetimedb
import { DbConnection, tables } from "./module_bindings";
const conn = DbConnection.builder()
.withUri("ws://localhost:3000")
.withDatabaseName("my-database")
.onConnect((ctx, identity, token) => {
console.log("Connected", identity.toHexString());
ctx.subscriptionBuilder().subscribe(tables.user);
})
.onConnectError((_ctx, err) => console.error(err))
.onDisconnect(() => console.log("Disconnected"))
.build();
查询与缓存规则
- 优先使用生成的查询构建器:
tables.user、tables.user.where((u) => u.online.eq(true))和表引用数组。 - 仅在查询构建器无法表达的高级场景中使用原始 SQL 订阅。
subscribeToAllTables()启动后无法取消;请使用特定订阅进行生命周期控制。- 行回调(
onInsert、onDelete、onUpdate)会针对进入、离开或更新本地缓存的行运行,包括订阅的应用和移除。 - 使用绑定生成的 reducer;方法名称和参数形式由生成的代码决定。
- 对于 React,将
DbConnection.builder()传递给SpacetimeDBProvider,不要调用.build()。使用useTable(tables.foo)和useReducer(reducers.foo)获取响应式数据并进行调用。 @clockworklabs/spacetimedb-sdk已弃用;请将 CLI 与spacetimedb包搭配使用,CLI 版本需为 1.4.0 或更高版本。
参考索引
| 需求 | 打开 |
|---|---|
| TypeScript SDK API 和框架集成 | references/clients-typescript.md |
指南
- 如有实际项目中的绑定名称,请使用生成的名称;参考中的示例仅为模式,不保证是本地标识符。
- 按 SDK 参考中展示的顺序进行订阅设置、缓存读取、reducer 观察和 reducer 调用。
- 如果主要任务是设置项目,请转至 spacetimedb-quickstarts 进行框架引导。
评论
支持 Markdown