今天在社区发现有人分享前端缓存的说明,于是想写一个js库用在自己的项目,加速、优化自己的项目,自己写毕竟不太好实现,找了一下开源社区,发现了下面这个好用的js存储库,非常不错,记录一下。
介绍
localForage 是一个快速而简单的 JavaScript 存储库。通过使用异步存储(IndexedDB 或 WebSQL)和简单的类 localStorage 的 API ,localForage 能改善 Web 应用的离线体验。
在不支持 IndexedDB 或 WebSQL 的浏览器中,localForage 使用 localStorage。
使用 localForage,只需将 JavaScript 文件放入页面即可:
<script src="localforage/dist/localforage.js"></script> <script>localforage.getItem('something', myCallback);</script>
配置
你可以通过 config() 方法设置数据库信息。可用的选项有 driver,name,storeName,version,size,和 description。
localforage.config({ driver : localforage.WEBSQL, // 使用 WebSQL;也可以使用 setDriver() name : 'myApp', version : 1.0, size : 4980736, // 数据库的大小,单位为字节。现仅 WebSQL 可用 storeName : 'keyvaluepairs', // 仅接受字母,数字和下划线 description : 'some description' });
使用localForage
这个插件提供了两种API方式——回调函数和Promise的方式,根据自己习惯使用即可:
①回调函数方式:
localforage.setItem('key', 'value', function (err) { // 若 err 不为 null,则表示出错 localforage.getItem('key', function (err, value) { // 若 err 不为 null,则表示出错,否则 value 为 key 对应的值 }); });
②Promise方式
localforage.setItem('key', 'value').then(function () { return localforage.getItem('key'); }).then(function (value) { // 成功获取值 }).catch(function (err) { // 出错了 });
多实例
这个插件还支持多实例方式,可以配置不同的对象。
通过 createInstance 方法,你可以创建多个 localForage 实例,且能指向不同数据仓库。所有 config 中的配置选项都可用。
var store = localforage.createInstance({ name: "nameHere" }); var otherStore = localforage.createInstance({ name: "otherName" }); // 设置某个数据仓库 key 的值不会影响到另一个数据仓库 store.setItem("key", "value"); otherStore.setItem("key", "value2");
框架支持:
AngularJS
Angular 4+
Backbone
Ember
Vue
.....
蛮好用的,手册和开源等详细信息到github看哦:
https://github.com/xmoyking/localForage-cn