一看就懂的 UniApp 数据缓存 API:一篇文章带你玩转本地存储!

news/2024/11/20 18:56:31/文章来源:https://www.cnblogs.com/xmxnn/p/18559015

UniApp 数据缓存 API 全面解析与最佳实践

在多平台跨端开发中,数据缓存是不可或缺的功能。UniApp 提供了一套强大的数据缓存 API,支持本地数据的存储、读取、删除和管理,适用于多种开发场景。本文将详细介绍这些 API 的功能、参数及使用方法,并分享一些实际开发中的应用技巧。


数据缓存 API 总览

UniApp 提供了两类缓存操作:同步操作异步操作。下表列出了主要方法及其功能:

功能 同步 API 异步 API
存储数据 uni.setStorageSync uni.setStorage
获取数据 uni.getStorageSync uni.getStorage
移除指定数据 uni.removeStorageSync uni.removeStorage
清除所有缓存 uni.clearStorageSync uni.clearStorage
获取缓存信息 uni.getStorageInfoSync uni.getStorageInfo

API 参数说明

以下是数据缓存 API 的详细参数及说明,适用于所有异步操作方法:

参数名 类型 必填 说明
key string 缓存的键名,用于标识数据
data any 要存储的数据,适用于 setStorage 系列
success Function 操作成功时的回调函数
fail Function 操作失败时的回调函数
complete Function 操作完成时的回调函数,无论成功或失败均触发

注意: data 参数仅适用于存储操作方法,如 uni.setStorageuni.setStorageSync


方法详解与代码示例

1. 存储数据

异步存储数据:uni.setStorage

uni.setStorage({key: 'userInfo',data: { name: 'Alice', age: 25 },success: () => {console.log('数据存储成功!');},fail: (err) => {console.error('存储失败:', err);},complete: () => {console.log('存储操作完成');},
});

同步存储数据:uni.setStorageSync

try {uni.setStorageSync('userInfo', { name: 'Alice', age: 25 });console.log('同步存储成功!');
} catch (err) {console.error('同步存储失败:', err);
}

2. 读取数据

异步读取数据:uni.getStorage

uni.getStorage({key: 'userInfo',success: (res) => {console.log('获取的数据:', res.data);},fail: (err) => {console.error('获取数据失败:', err);},complete: () => {console.log('数据获取完成');},
});

同步读取数据:uni.getStorageSync

try {const data = uni.getStorageSync('userInfo');console.log('同步获取的数据:', data);
} catch (err) {console.error('同步获取失败:', err);
}

3. 删除数据

异步删除指定数据:uni.removeStorage

uni.removeStorage({key: 'userInfo',success: () => {console.log('数据移除成功!');},fail: (err) => {console.error('移除失败:', err);},complete: () => {console.log('移除操作完成');},
});

同步删除指定数据:uni.removeStorageSync

try {uni.removeStorageSync('userInfo');console.log('同步移除成功!');
} catch (err) {console.error('同步移除失败:', err);
}

4. 清除所有缓存

异步清除缓存:uni.clearStorage

uni.clearStorage({success: () => {console.log('缓存已清除!');},fail: (err) => {console.error('清除失败:', err);},complete: () => {console.log('清除缓存操作完成');},
});

同步清除缓存:uni.clearStorageSync

try {uni.clearStorageSync();console.log('同步清除缓存成功!');
} catch (err) {console.error('同步清除缓存失败:', err);
}

5. 获取缓存信息

异步获取缓存信息:uni.getStorageInfo

uni.getStorageInfo({success: (res) => {console.log('所有键名:', res.keys);console.log('当前缓存大小:', res.currentSize, 'KB');console.log('最大允许缓存大小:', res.limitSize, 'KB');},fail: (err) => {console.error('获取缓存信息失败:', err);},complete: () => {console.log('缓存信息获取完成');},
});

同步获取缓存信息:uni.getStorageInfoSync

try {const info = uni.getStorageInfoSync();console.log('所有键名:', info.keys);console.log('当前缓存大小:', info.currentSize, 'KB');console.log('最大允许缓存大小:', info.limitSize, 'KB');
} catch (err) {console.error('同步获取缓存信息失败:', err);
}

实用技巧与注意事项

  1. 缓存大小限制

    • 小程序端缓存通常有限制。例如,微信小程序最大允许 10MB 缓存。
    • 可通过 uni.getStorageInfo 查看当前缓存使用情况,并定期清理不必要的数据。
  2. 数据存储格式

    • 缓存数据可以是任意类型,但建议复杂对象使用 JSON 格式存储:
      uni.setStorageSync('config', JSON.stringify({ theme: 'dark', lang: 'en' }));
      const config = JSON.parse(uni.getStorageSync('config'));
      
  3. 异步 vs. 同步

    • 异步方法:适用于耗时任务,不阻塞主线程。
    • 同步方法:适用于初始化加载等必须即时完成的操作,但可能影响性能。
  4. 跨平台一致性

    • 不同平台对缓存的实现可能略有差异(如缓存大小限制),在开发中需充分测试以确保功能一致。

总结

UniApp 的数据缓存 API 提供了高效、灵活的本地存储解决方案,适用于跨端开发中的各种场景。无论是用户数据管理还是应用配置保存,这些方法都能帮助开发者优化性能和用户体验。熟练掌握这些 API,可以为你的应用开发增添更多可能性。

希望本文能为你提供帮助,欢迎分享你的开发经验或提出疑问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/837472.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级程序语言设计第八个个人作业

2024高级语言程序设计:https://edu.cnblogs.com/campus/fzu/2024C 高级语言程序设计课程第五次作业:https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 学号:102400231 姓名:袁志华 作业 第11章 12367第12章 12389

人工智能之机器学习基础——贝叶斯(Bayesian Methods)

贝叶斯分类器 贝叶斯分类器是一类基于贝叶斯定理的统计学习方法,广泛应用于分类问题。其核心思想是通过计算后验概率 P(y∣x),将输入样本 x 分类到具有最大后验概率的类别。 1. 贝叶斯定理 贝叶斯定理是概率论中的基本法则,用于描述条件概率的关系: 其中:P(y∣x):在已知…

2024.11.20 NOIP模拟 - 模拟赛记录

异或(xor) 每次所加三角形的范围如图所示:这道题做法较多,我是通过两组差分与前缀和来做的。 首先需要一个三角形差分,使每一次在差分数组中修改时,影响到的范围是一个三角形,比如这样(红色点为 \((x,y)\),即 \((r,c)\)):假设我们真正需要修改的三角形是橙色部分:那…

实时多模态 AI 的 N 种新可能丨实时互动和大模型专场@RTE2024回顾

在本届 RTE2024 大会上,来自产业界和学术界的多位专家深入探讨了实时互动和大模型技术的最新进展及其潜在应用。西湖心辰联合创始人俞佳、声网 AI 算法工程师乔齐、MiniMax 资深音频算法专家张博闻、商汤科技数字文娱解决方案负责人焦文奎以及面壁智能算法 VP 翟忠武等分享了他…

vscode主题美化

vscode 主题美化 主题使用Tokyo Night由于我在用rust的时候发现其对一些变量的颜色不太好看,所以自己又在设置中改了一点"editor.tokenColorCustomizations": {...."[Tokyo Night]": { // or "[Tokyo Night Storm]""textMateRules": […

2024.11.20总结

1本文于 github 博客同步更新。 A: 一个数可以被操作当且仅存在一列的顶部元素为它且存在一列的底部元素为它,初始扫一遍,将合法的元素以顶部所在列为关键字扔到小根堆里,每次找到最小的元素添加,然后检查将新露出来的元素是否存在匹配,若结束时未填完即为无解。 B: 要么…

ABAP 日期计算

RP_CALC_DATE_IN_INTERVAL 日期函数2 FIMA_DATE_CREATE 有问题 在2月份计算有问题 慎用 计算两个日期月份 FIMA_DAYS_AND_MONTHS_AND_YEARS

群晖NAS维修数据恢复

一台群晖NAS,开机状态灯是黄灯,DISC4也是亮黄灯,机器一直在报警。 群辉型号DS415+,是一种典型的硬盘损坏的情况,这是一台四盘位的一个群辉NAS,第一时间把每个硬盘取下来编个编号,WD的红盘也就是nasVR专用硬盘,型号是WD401F2X的,生产日期有三块是2015年,有一块是比较新…

实景三维技术在基层社会治理中的数智化应用

在推进国家治理体系和治理能力现代化的进程中,基层社会治理的数字化转型尤为关键。实景三维技术,以其直观、精准的空间信息表达能力,正在成为基层社会治理的有力工具。本文将探讨实景三维技术如何在“地、房、人、用、管”五个维度赋能基层社会治理。一、实景三维技术简介实…

Nginx服务器配置---反向代理服务时proxy_pass的转发规则

nginx是由俄罗斯开发的一款http web服务器,我们经常用这款服务器做负载均衡和反向代理。今天我们就来聊聊Nginx作为反向代理时,如何进行路由配置。假设你已经部署好Nginx了,我们进入Nginx安装目录,进入nginx.conf文件。找到http节点下的server节点,值是一个json。在json中…