Skip to content

Bindra:适用于 TypeScript 应用的现代响应式数据层

如果你在用 TypeScript 构建前端,厌倦了把 fetch、本地数组、校验和另一个状态工具拼在一起,Bindra 可能就是你缺失的那块干净数据层。它是轻量、零依赖的库,让数据管理更统一 —— 无论数据在本地、来自 REST API,还是通过 WebSocket 实时传输。

Bindra 是什么(不是什么)

  • Bindra 是响应式的数据管理库:把 fetch、CRUD、分页、缓存、校验、实时和事件整合到一套一致的 API 中。
  • Bindra 不是 UI 框架,也不是全局状态替代品。把它当作数据骨干,你的组件(React/Vue/Svelte 或原生)订阅它即可。

为什么值得信赖

  • 生产可用:155+ 通过的测试,严格 TypeScript,零运行时依赖。
  • 面向现代应用:高效分页(offset/cursor)、乐观更新、批量操作、缓存、WebSocket 支持。
  • 开发者友好:清晰事件,observables/信号,统一的本地与远程数据 API。

日常核心用法

  • 响应式数据源:订阅数据、当前记录、loading 等变化,让 UI 自动更新。
  • 统一 CRUD:fetchcreateupdatedelete —— 无论内存还是 REST,使用方式一致。
  • 导航与查询:在记录间移动(nextprevgoto),以及过滤/排序/限制的查询。
  • 性能与可靠性:TTL 缓存、重试、乐观更新、批量操作让体验更顺畅。
  • 实时能力:启用 WebSocket,自动重连,适配协作或直播信息流。
  • 校验与安全:字段级校验、XSS 清理、CSRF 头 —— 合理的防护。

快速示例

ts
import { DataSource } from 'bindra';

interface User { id: number; name: string; email: string; }

const users = new DataSource<User>({
  url: '/api/users',
  pagination: { enabled: true, pageSize: 20 },
  cache: { enabled: true, ttl: 300_000 },
  realtime: { enabled: true, url: 'wss://api.example.com/ws', reconnect: true },
});

await users.fetch();                               // 读取
const alice = await users.create({                   // 创建
  name: 'Alice', email: 'alice@example.com'
});
await users.update(alice.id, { name: 'Alice Smith' }); // 更新
await users.delete(alice.id);                           // 删除

const unsub = users.currentRecord.subscribe(u => console.log('当前用户:', u));
users.next(); // 导航
unsub();

能构建什么

  • 管理后台:类型安全的 CRUD,分页、缓存、批量操作一应俱全。
  • 实时工具:聊天、协同编辑、实时分析。
  • 数据密集型 SPA:信息流、商品目录、fetchMore() 实现无限滚动。
  • 表单与校验:字段级规则、自定义校验器、可用的错误信息。

随处可用

  • 框架无关:React/Vue/Svelte 或无框架。
  • TypeScript 优先:泛型与严格类型 —— 更好的 IntelliSense 与安全性。
  • 零依赖:体积小、构建快、供应链风险低。

更深入一点

  • 分页:offset 与 cursor;fetchPage()fetchMore() 适配无限滚动。
  • 缓存:TTL、手动失效、对缓存友好的查询。
  • 乐观更新:即时 UI 反馈,错误时自动回滚。
  • 批量操作:createBatchupdateBatchdeleteBatch 适配大工作量。
  • 事件:生命周期钩子(createdupdateddeletedfetchederror)与实时事件。
  • 安全:CSRF、字段清理与错误类型,保证健壮处理。

谁适合 Bindra

  • 需要在组件/页面之间标准化数据流的团队。
  • 想要响应式数据但不想绑定到状态框架的开发者。
  • 追求强 TypeScript 保证与干净、可测试数据逻辑的人。

开始使用

bash
npm install bindra
# 或
pnpm add bindra
  • 阅读友好的入门指南
  • 查看 DataSource、分页、缓存、实时的 API 文档
  • 尝试示例(CRUD、实时、分页、React/Vue)

最后

Bindra 刚好落在一个甜点位:为前端复杂数据工作提供统一、类型安全的 API。如果你的应用需要获取、校验、分页、响应变化、并偶尔需要实时更新 —— 这套库能让一切更一致、更愉快。

Released under the MIT License.