在项目开发的过程中,为了减少提高性能,减少请求,开发者往往需要将一些不易改变的数据放入本地缓存中。如把用户使用的模板数据放入 localStorage 或者 IndexedDB。代码往往如下书写。
可以看到,代码非常冗余,同时这里的代码还没有处理数据版本、过期时间以及数据写入等功能。如果再把这些功能点加入,代码将会更加复杂,不易维护。
于是个人写了一个小工具 storage-tools 来处理这个问题。
该库默认使用 localStorage 作为数据源,开发者从库中获取 StorageHelper 工具类。
StorageHelper 工具类支持了其他缓存源,代码如下:
当然了,我们还可以继承 StorageHelper 构建业务类。
针对于某些特定列表顺序需求,我们还可以构建 ListStorageHelper。
任何项目都不是一触而就的,下面是关于 storage-tools 库的编写思路。希望能对大家有一些帮助。
StorageHelper 支持 localStorage 存储
项目的第一步就是支持本地储存 localStorage 的存取。
StorageHelper 添加超时机制
添加超时机制很简单,只需要在 getData 的时候检查一下数据即可。
StorageHelper 添加其他存储适配
此时我们可以添加其他数据源适配,方便开发者自定义 storage。
StorageHelper 添加异步获取
如有些数据源需要异步构建并获取数据,例如 IndexedDB 。这里我们先建立一个 IndexedDBAdaptor 类。
对 StorageHelper 类做如下改造
如此,我们就完成了 StorageHelper 全部代码。
列表辅助类 ListStorageHelper
ListStorageHelper 基于 StorageHelper 构建,方便特定业务使用。
该类继承了 StorageHelper,我们依旧可以直接调用 commit 提交数据。如此我们就不需要维护复杂的 storage 存取逻辑了。
代码都在 storage-tools 中,欢迎各位提交 issue 以及 pr。
参考资料
storage-tools
sync-time