大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
什么是 localForageOffline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API.
localForage 是一个快速且简单的 JavaScript 存储库,其通过使用异步存储对例如:IndexedDB 、 WebSQL、localStorage 等进行简单的、强大的 API 包装来改善 Web 应用程序的离线体验。localForage 在不支持 IndexedDB 或 WebSQL 的浏览器中使用 localStorage。
从 localForage v1.7.3 开始,localForage 添加到应用程序中的有效代码体积相当小,其使用 gzip 压缩提供服务,localForage 将为 Bundle 总大小增加不到 10k,如果使用 brotli'd 压缩算法后体积更加小,只有 7.8k。
同时,对于特定前端框架,localForage 还提供了存储驱动程序,开发者可以直接使用,比如:AngularJS、Angular 4、Backbone、Ember、Vue、NuxtJS 等等
目前 localForage 在 Github 通过 MIT 协议开源,有超过 24.1k 的 star、2k 的 fork、392k 的项目依赖量、代码贡献者 100+、妥妥的前端优质项目。
如何使用 localForage要使用 localForage,只需将下面的 JavaScript 文件添加到页面中即可:
<script src="localforage/dist/localforage.js"></script><script>localforage.getItem('something', myCallback);</script>当然,也非常推荐开发者使用 async/await 的模式使用 localForage:
try { const value = await localforage.getItem('somekey'); // 当从离线数据 store 获取到数据后调用 console.log(value);} catch (err) { // 抛出错误调用 console.log(err);}如果使用 Promise 的方法也非常简单:
localforage.setItem('key', 'value').then(function () { return localforage.getItem('key');}).then(function (value) { // 获取到值}).catch(function (err) { // we got an error});同时,localForage 还提供了众多方法来对存储本身进行操作,比如:localforage.clear() 将删除离线 store 中的所有数据:
localforage.clear().then(function() { // 数据删除后执行该方法 console.log('Database is now empty.');}).catch(function(err) { // 错误处理方法 console.log(err);});同时,还提供了 iterate 方法对离线存储 store 的数据进行迭代:
localforage.iterate(function(value, key, iterationNumber) { // 迭代键值对,每个元素都会调用一次 console.log([key, value]);}).then(function() { console.log('Iteration has completed');}).catch(function(err) { // 错误处理方法 console.log(err);});localForage 还允许开发者调用 setDriver 选择特定的驱动,默认情况下按照 IndexedDB>WebSQL>localStorage 的优先级。比如下面的示例:
localforage.setDriver(localforage.LOCALSTORAGE);// 强制使用 localStoragelocalforage.setDriver([localforage.WEBSQL, localforage.INDEXEDDB]);// 指定多个驱动更多关于 localForage 的用法可以参考文末资料,本文不再过多展开。
参考资料https://github.com/localForage/localForage
https://localforage.github.io/localForage/
https://byte-explorer.medium.com/localforage-a-lightweight-cross-browser-offline-storage-library-ae29e1960348
https://dev.to/cooldashing24/save-data-to-offline-storage-with-localforage-obd?comments_sort=top