Skip to content
forked from akirarika/milkio

⚓ 足够简单的前端存储解决方案

License

Notifications You must be signed in to change notification settings

RemberU/kurimudb

 
 

Repository files navigation

Kurimudb 是什么

Kurimudb 是一款渐进式的 Web 端本地存储库,可将数据保存到 LocalStorage、IndexedDB、Cookie 等地方,和订阅值的变更。

除了持久化数据之外,若你愿意,Kurimudb 还能成为你应用的 Model 层 抽象,接任你应用中状态管理库的职责 (如 Vuex、Redux、Mobx),使你应用真正拥有单一数据来源。

Kurimudb 是驱动化的,这意味着你可以几乎不更改代码的情况下更换具体实现。我们提供了 Cookie LocalStorageDexie (IndexedDB) 三种驱动。如果不满足你的需求,你还可以编写自己的驱动实现。

文档

你可以点击这里来阅读文档。

Todo

即将要做的事

  • 为文档网站做一个首页

  • 新增自动订阅功能

  • 规范化模型的配置,全部通过构造函数来传入

  • 自动名称推断:若不指定模型的名称,则通过 constructor.name 来确定

  • 自动类型推断:若不指定模型的主键类型,则键值对模型使用 string,集合模型使用 number

  • LocalStorage 驱动可以使用 all 函数

  • 编写一个不依赖 Dexie 的轻量级 IndexedDB 驱动 (现有 Dexie 驱动会继续保留,也不会停止维护)

  • 做一个 Nodejs 驱动,可以存储 json 数据和 blob 对象,用于 electron 之类的场景

  • 备用驱动功能:指定一个驱动数组,若数组中靠前的驱动在当前环境下不可使用,则使用靠后的驱动作为替代(为了保持数据一致性,具体使用的驱动,会在用户首次使用时指定,即使后续此用户的环境支持了排名靠前的驱动(如使用新浏览器),也依然会保持当前所使用的驱动))

  • 国际化

Maybe Todo

或许会做的事

  • 为模型加入一种新模式,省去需手动定义接口,再去调用 seed 函数来填充数据的麻烦

  • 旧值与新值相同时,不再重复触发订阅

  • 加入适配微信小程序和 uniapp 驱动

  • 更好的服务端渲染支持:在服务端中添加的数据,会在用户访问页面后,存储到浏览器里

About

⚓ 足够简单的前端存储解决方案

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 93.4%
  • JavaScript 4.3%
  • Vue 1.5%
  • HTML 0.8%