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:
fetch、create、update、delete—— 无论内存还是 REST,使用方式一致。 - 导航与查询:在记录间移动(
next、prev、goto),以及过滤/排序/限制的查询。 - 性能与可靠性: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 反馈,错误时自动回滚。
- 批量操作:
createBatch、updateBatch、deleteBatch适配大工作量。 - 事件:生命周期钩子(
created、updated、deleted、fetched、error)与实时事件。 - 安全:CSRF、字段清理与错误类型,保证健壮处理。
谁适合 Bindra
- 需要在组件/页面之间标准化数据流的团队。
- 想要响应式数据但不想绑定到状态框架的开发者。
- 追求强 TypeScript 保证与干净、可测试数据逻辑的人。
开始使用
bash
npm install bindra
# 或
pnpm add bindra- 阅读友好的入门指南
- 查看
DataSource、分页、缓存、实时的 API 文档 - 尝试示例(CRUD、实时、分页、React/Vue)
最后
Bindra 刚好落在一个甜点位:为前端复杂数据工作提供统一、类型安全的 API。如果你的应用需要获取、校验、分页、响应变化、并偶尔需要实时更新 —— 这套库能让一切更一致、更愉快。