当前位置: 首页 > Web前端 > vue.js

就这样写离线存储,老板娘再也没有叫我加班,localForage的使用

时间:2023-04-01 11:21:44 vue.js

首先,按照国际惯例,朋友无中生有。这位朋友最近遇到了一个头疼的问题。localStorage的容量太小,同一个域名下的不同项目很难区分。巧的是,有这么一个Package——localForage就可以解决了。但是localForage只能以.then或者回调函数的形式使用。像vuex一样默认给state设置离线存储的值很不方便。原文:localForage文档localForage是一个JavaScript库,通过简单的异步存储和localStorageAPI来改善您的web应用程序的离线体验。它可以存储多种类型的数据,而不仅仅是字符串。localForage有一个优雅的降级策略,如果浏览器不支持IndexedDB或WebSQL,使用localStorage。适用于所有主流浏览器:Chrome、Firefox、IE和Safari(包括SafariMobile)。localForage提供回调API,也支持ES6PromisesAPI,你可以自行选择。localForage的使用非常简单。相关使用方法请参考原文档。这里主要介绍一下我使用localForage完成同步取值的操作(类似于localStorage直接取值)。我的理解是做成一个函数,使用asyncawait完成。以vuex中常见的初始设置一个默认值为例,先看main.js:importVuefrom'vue'importAppfrom'./App.vue'importrouterfrom'./router'importstoreDatafrom'./store'importlocalforagefrom'localforage'localforage.config({name:'fangtu'//将当前项目的存储空间命名为fangtu});//制作一个自执行的异步函数(asyncfunction(){Vue.config.productionTip=falseconststore=awaitstoreDatanewVue({router,store,render:h=>h(App)}).$mount('#app')})()设置默认值后,创建一个名为fangtu的存储空间包含用户名:'xbd':查看vuex的结构:importVuefrom'vue'importVuexfrom'vuex'importlocalforagefrom'localforage'Vue.use(Vuex)//释放一个自己执行了asyncfunctionexportdefault(asyncfunction(){//等待localforage值constusername=awaitlocalforage.getItem('username')returnnewVuex.Store({state:{username},mutations:{},actions:{},模块s:{}})})()把我保存在main.js中的默认值去掉后,看看能不能正常获取到