项目简介
为什么创建这个项目?
中国传统文化中,亲戚关系错综复杂。"爸爸的哥哥的老婆"应该叫什么?"外婆和奶奶之间是什么关系?"这些问题常常让人困惑。
优秀的开源项目 mumuy/relationship 已经很好地解决了这个问题,但在实际使用中,我们发现了一些痛点:
遇到的问题
在 React Native 移动端 使用原版 JS 包时,会遇到以下错误:
ERROR [RangeError: Property storage exceeds 196607 properties]这是由于 JavaScriptCore 引擎对对象属性数量的限制(约 196607 个),而原版 JS 包在初始化时会创建大量对象属性。
解决方案
relationship-ts 通过以下优化解决了这个问题:
| 优化 | 说明 |
|---|---|
| Map 数据结构 | 使用 Map 代替 Object 存储数据,O(1) 查找性能 |
| LRU 缓存 | 实现智能缓存机制,重复查询性能提升 60 倍 |
| TypeScript | 完整的类型定义,开发体验更好 |
| 更小体积 | 优化后的包体积减少约 5% |
项目特点
完整的类型支持
ts
import relationship, type { RelationshipOptions, Sex, OutputType } from 'relationship-ts';
// 类型会被自动推导
const options: RelationshipOptions = {
text: '爸爸的妈妈',
sex: 1,
type: 'default',
};高性能
| 指标 | 结果 |
|---|---|
| 冷启动 QPS | ~14,000 req/s |
| 热启动 QPS | ~30,000 req/s |
| 平均耗时(缓存) | 0.033 ms |
| 性能提升 | 2.1 倍 |
移动端兼容
完美支持 React Native,不再出现属性超限错误。
适用场景
- 家庭应用 - 构建家庭社交、族谱工具
- 游戏应用 - 需要处理中文亲属关系的游戏
- 学习工具 - 了解中国传统文化中的亲戚关系
- 日常查询 - 快速查询复杂的亲戚称谓