這篇文章給大家分享的是有關微信小程序如何實現(xiàn)本地數(shù)據(jù)存儲的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
站在用戶的角度思考問題,與客戶深入溝通,找到漯河網(wǎng)站設計與漯河網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、網(wǎng)站設計、外貿(mào)網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬主機、企業(yè)郵箱。業(yè)務覆蓋漯河地區(qū)。微信小程序 本地數(shù)據(jù)存儲實例詳解
前言
如果您在看此文章之前有過其他程序的開發(fā)經(jīng)驗,那一定會知道一般例如安卓或者蘋果的原生APP都提供了本地的存儲功能,甚至可以使用sqlite數(shù)據(jù)庫來做存儲??墒俏⑿诺男〕绦蚩蚣芑谖⑿疟旧恚鋵嶋H運行環(huán)境只是在瀏覽器里面,所以不會提供那么豐富的數(shù)據(jù)存儲實力。但html5開始已經(jīng)可以在瀏覽器里面存儲數(shù)據(jù),好在微信的小程序給這個功能封裝好了,這樣我們可以使用數(shù)據(jù)存儲。
每個微信小程序都可以有自己的本地緩存,可以通過 wx.setStorage(wx.setStorageSync)
wx.getStorage(wx.getStorageSync)、 wx.clearStorage(wx.clearStorageSync)
可以對本地緩存進行設置、獲取和清理。本地緩存大為10MB。
上面的set和get都有對應的Sync方法,帶Sync的方法為同步方法、不帶Sync的方法為異步方法。
設置緩存都需要設置一個key和對應的data值,我們在《微信web開發(fā)者工具》中的調(diào)試狀態(tài)下可以點擊調(diào)試窗口的Storage 欄來查看我們緩存在本地的數(shù)據(jù)。
緩存可以保存數(shù)組、數(shù)值、字符串、對象。
設置緩存
提供setStorage和setStorageSync兩個接口,并且在使用設置存儲方法時,如果小程序的存儲值當中已經(jīng)存在對應的key的值,那么會使用新的值替換原來的值。
setSotrage接口
wx.setStorage({ key:"key", data:"value", success:function(res){console.log(res)}, fail:function(res){console.log(res)}, complete:function(res){console.log(res)}, }) //Object {errMsg: "setStorage:ok"} //Object {errMsg: "setStorage:ok"}
setStorageSync接口
因為該方法為同步接口,所以直接設置key和data:
wx.setStorageSync('key', 'value')
上面兩個demo中我們都使用了字符串緩存,當然我們也可以緩存一個對象,例如:
wx.setStorage({key:"ob",data:{name:'smallerpig',sex:1,age:18}})
獲取緩存
getSotrage接口
異步接口,所以我們可以定義幾個回調(diào):
wx.getStorage( { key:'key', success:function(res){ console.log(res)//Object {errMsg: "getStorage:ok", data: "value1"} }, fail:function(res){console.log(res)}, complete:function(res){console.log(res)} })
其中,我們可以看出來,微信小程序的很多異步接口的回調(diào)都會給出三個回調(diào):success、fail、complete,在執(zhí)行成功的時候回執(zhí)行success、complete回調(diào);在執(zhí)行失敗之后會分別執(zhí)行fail、complete回調(diào)。
getSotrageSync接口
該接口為同步接口,所以只需傳遞對應的key值就可以了。如下列代碼:
wx.getStorageSync('ob') //Object {name: "smallerpig", sex: 1, age: 18}
獲取當前存儲總結(jié)
使用wx.getStorageInfo接口
例如下列代碼:
wx.getStorageInfo({ success: function(res) { console.log(res.keys) console.log(res.currentSize) console.log(res.limitSize) } //["logs", "r3session", "key"]0: "logs"1: "r3session"2: "key"] //1 //10240 })
也可以使用同步接口wx.getStorageInfoSync。
緩存的使用
在上一篇文章中,小豬介紹了如何解密通過wx.getUserInfo接口獲取到的cryptedData數(shù)據(jù)。其中的session_key小豬是寫在flask的緩存中,緩存的鍵是寫死為:xcx_session_key。在真實環(huán)境中我們不能夠這樣寫,因為這樣不同的用戶獲取到的session_key是相同的,所以我們需要給不同的用戶附上不同的緩存key。把flask的緩存key返回給微信小程序,小程序中可以固定一個key值,data值保持flask后臺給到的值。
說的比較繞,這里需要讀者好好理解下。
在flask的代碼的使用code獲取session_key中,使用下列代碼:
@app.route('/user/getuserinfo', methods=['GET', 'POST']) def getuserinfo(): code = request.data url = 'https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code' % (appid, secret, code) r = requests.get(url) j = json.loads(r.text) r3session_key = binascii.hexlify(os.urandom(64)) cache.set(r3session_key, j['session_key']) return r3session_key
接下來,在wx.request的回調(diào)中把flask中返回的r3session_key保存起來:
wx.request({ url: 'https://***.smallerpig.com/user/getuserinfo', data: r.code, method: 'POST', success: function(res){ wx.setStorageSync('r3session', res.data) } })
再接下來,在調(diào)用wx.getUserInfo時將返回的數(shù)據(jù)加上從微信小程序本地緩存中取到的r3session丟給flask來處理,flask根據(jù)來的r3session從本地服務器的flask緩存中取到微信的值解密cryptedData。這才是一個完整的過程。
小程序的getUserInfo代碼:
wx.getUserInfo({ success: function (res) { that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) //將本地存儲中的r3session值也同樣傳遞到我的服務器,在服務器中找出微信給到我們的session_key var r3session = wx.getStorageSync('r3session') res.r3session = r3session wx.request({ url: 'https://***.smallerpig.com/user/getuserunionid', data: res, success: function(res){ // success console.log(res) }, }) } })
對應的flask代碼:
@app.route('/user/getuserunionid', methods=['GET', 'POST']) def getuserid(): r = json.loads(request.data) encryptedData = r['encryptedData'] iv = r['iv'] xcx_session_key = r['r3session'] session_key = cache.get(xcx_session_key) # 從緩存中取出對應r3session對應的session_key pc = WXBizDataCrypt(appid, session_key) return pc.decrypt(encryptedData, iv)
感謝各位的閱讀!關于“微信小程序如何實現(xiàn)本地數(shù)據(jù)存儲”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
名稱欄目:微信小程序如何實現(xiàn)本地數(shù)據(jù)存儲-創(chuàng)新互聯(lián)
鏈接地址:http://jinyejixie.com/article42/ghiec.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、靜態(tài)網(wǎng)站、標簽優(yōu)化、Google、移動網(wǎng)站建設、響應式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容