這篇文章將為大家詳細講解有關微信小程序中數據存儲實現方式有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在最初創建小程序時,app.js文件中App方法中傳入的對象里面默認添加了globalData參數。在所有的頁面中我們都可以通過getApp方法獲取到這個App方法傳入的對象,進而拿到其中的globalData。
const App = getApp(); const openId = App.globalData.openId; App.globalData.openId = 1; delete App.globalData.openId;
globalData的值是一個對象,我們可以用對待對象的方式一樣調用它。(globalData并非一定叫這個名字)
每個頁面的js邏輯層頁面都是在Page方法中傳入了一個對象。其中data的值一般用來存儲當前頁面內的變量值。其主要用途是通過setData接口和視圖層進行數據交互,從而改變wxml視圖層顯示內容。
如果不需要將data中的值傳入到視圖層中,不建議使用setData而是改用對象方式操作??梢杂行Ч澥⌒阅?。
在頁面初始化時,data中的數據都會和視圖層進行數據交互。如果進一步處理,我們還可以在對象中添加localData專門存儲當前頁面所需變量
Page({ data: { openId: 123 }, localData: { timeStamp: Date.now() } }) this.setData({ openId: 321 }) this.data.openId = 321; this.localData.timeStamp = Data.now();
storage也是小程序中很常用的一種存儲方式,和全局變量globalData類似。不局限于某個頁面,任何位置都可以通過wx提供的接口獲取到其中的值。
優點是:可以長期存儲,即使退出重新登陸數據不會消失。(上限存儲10M)
缺點是:異步行為,每次存取耗時相對較長。
wx提供了增、刪、改、查接口(增、改都是一個set接口),下面只舉一個存儲數據例子:
wx.setStorage({ key: 'key', data: 'value', success: res => { ... } }) // 支持promise wx.setStorage({key: 'key', data: 'value'}) .then(res => { ... })
wx.setStorageSync('key', 'value') ...
fileSysteManager(下簡稱fs)可以把文字、圖片類型的數據通過文件的方式存儲到本地。存儲上限10M(之前記得200M,后來翻文檔看到的都是10了),長期存儲,不刪除小程序數據就不會消失。
const fs = wx.getFileSystemManager(); fs.writeFile({ filePath: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`, data: JSON.stringify(data), encoding: 'utf8', success(res) { ... } })
filePath中的 env.userDatapath 是wx分配給當前程序的默認空間,coder可以在其下創建文件夾,添加文件等。
fileName是存儲數據時的文件名。
data是要存儲的數據,可以是圖片。
encoding:編碼格式,當data為圖片時可已調整為二進制。
存取數據時要牢記文件名和存儲位置;
fs.readFile({ filePath: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`, encoding: 'utf8', position: 0, success(res) { JSON.parse(res.data) } })
fs.unlink({ filePath: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`, encoding: 'utf8', success(res) { ... } })
fs的操作都是異步行為,要注意處理邏輯。
關于“微信小程序中數據存儲實現方式有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。