uniapp手机存数据
本地存储方式
uni.setStorage/uni.getStorage
适用于持久化存储少量数据(如用户登录状态、配置信息),数据以键值对形式保存在本地,关闭应用后仍存在。同步方法会阻塞线程,异步方法通过回调处理结果。
示例代码(异步存储)
uni.setStorage({
key: 'token',
data: 'abc123',
success: () => console.log('存储成功')
});
示例代码(同步读取)
try {
const value = uni.getStorageSync('token');
console.log(value); // 输出 abc123
} catch (e) {
console.error('读取失败');
}
临时存储方式
uni.setStorageSync/uni.getStorageSync
适合保存临时数据(如表单草稿),页面关闭后数据自动清除。同步方法直接返回操作结果,需用try-catch处理异常。

数据生命周期
仅当前小程序运行期间有效,重启后数据丢失。适用于页面间短时传递复杂对象。
文件系统存储
uni.saveFile/uni.getFileSystemManager
处理大型文件(如图片、音频),需先通过API下载或生成文件,再调用保存接口。文件路径为临时地址,长期保存需配合本地存储记录路径。
保存网络图片示例

uni.downloadFile({
url: 'https://example.com/image.jpg',
success: res => {
uni.saveFile({
tempFilePath: res.tempFilePath,
success: savedRes => console.log(savedRes.savedFilePath)
});
}
});
SQLite数据库
plus.sqlite
App端专用,适合结构化数据高频读写(如聊天记录)。需创建数据库并执行SQL语句,支持事务处理。
初始化数据库示例
const db = plus.sqlite.openDatabase({
name: 'mydb',
path: '_doc/mydb.db'
});
db.executeSql('CREATE TABLE IF NOT EXISTS logs(id INTEGER PRIMARY KEY, content TEXT)');
注意事项
数据安全
敏感信息(如密码)避免直接存储,应加密后配合uni.removeStorage清除。App端使用SQLite时注意防止SQL注入。
平台差异
H5端存储有域名限制,iOS Webview存在5MB上限。App端可通过native.js扩展存储方案,如访问原生NSUserDefaults(iOS)或SharedPreferences(Android)。






