uniapp本地存储详解

这篇具有很好参考价值的文章主要介绍了uniapp本地存储详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uniapp本地存储详解

前言

在开发uniapp应用时,我们常常需要使用本地存储来保存一些数据,比如用户登录信息、设置项等,使得应用能够在设备上保存和读取数据,以便提供更好的用户体验和离线功能支持,本文将简单介绍uniapp中的本地存储相关API使用方式。

存储原理分析

为了更好地理解uniapp本地存储,先简单介绍一下计算机的存储原理。计算机的存储系统通常由主存储器(RAM)和辅助存储器(硬盘、固态硬盘等)组成。

主存储器

主存储器是计算机中用于临时存储数据和指令的地方。它以字节为单位进行存储,每个字节都有一个唯一的地址。主存储器具有快速的读写速度,但容量有限。数据在主存储器中存储时,会被划分为连续的存储单元,可以通过地址访问。

辅助存储器

辅助存储器通常具有更大的容量,但访问速度相对较慢。常见的辅助存储器包括硬盘和固态硬盘。数据在辅助存储器中以块的形式存储。块是存储器中最小的可读写单位,通常具有固定的大小(如4KB)。当需要读取或写入数据时,计算机会按照块的粒度进行操作。

存储格式和字节对齐

数据在存储器中以二进制形式表示。不同的数据类型(如整数、浮点数、字符等)在存储器中占用的字节数不同。为了高效存储和访问数据,计算机要求数据按照字节对齐的方式存储。字节对齐指的是数据存储的起始地址必须是其数据类型大小的整数倍。

uniapp 本地存储

1. uni.setStorage(OBJECT)与uni.getStorage(OBJECT)
uni.setStorage(OBJECT)

将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。
uniapp本地存储详解

示例代码

uni.setStorage({
	key: 'storage_key',
	data: 'hello',
	success: function () {
		console.log('success');
	}
});
uni.getStorage(OBJECT)

从本地缓存中异步获取指定 key 对应的内容。
uniapp本地存储详解

示例代码

uni.getStorage({
	key: 'storage_key',
	success: function (res) {
		console.log(res.data);
	}
});
2. uni.setStorageSync与uni.getStorageSync
uni.setStorageSync(KEY,DATA)

将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。
uniapp本地存储详解

try {
	uni.setStorageSync('storage_key', 'hello');
} catch (e) {
	// error
}
uni.getStorageSync(KEY)

从本地缓存中同步获取指定 key 对应的内容。
uniapp本地存储详解

示例代码

try {
	const value = uni.getStorageSync('storage_key');
	if (value) {
		console.log(value);
	}
} catch (e) {
	// error
}
3. 获取存储信息uni.getStorageInfo与uni.getStorageInfoSync
uni.getStorageInfoSync()

同步获取当前 storage 的相关信息。
uniapp本地存储详解

示例

try {
	const res = uni.getStorageInfoSync();
	console.log(res.keys);
	console.log(res.currentSize);
	console.log(res.limitSize);
} catch (e) {
	// error
} 
uni.getStorageInfo(OBJECT)

异步获取当前 storage 的相关信息
uniapp本地存储详解

示例代码

uni.getStorageInfo({
	success: function (res) {
		console.log(res.keys);
		console.log(res.currentSize);
		console.log(res.limitSize);
	}
});
4. 移除 uni.removeStorage与uni.removeStorageSync
uni.removeStorage(OBJECT)

从本地缓存中异步移除指定 key。
uniapp本地存储详解

代码示例

uni.removeStorage({
	key: 'storage_key',
	success: function (res) {
		console.log('success');
	}
}); 
uni.removeStorageSync(KEY)

从本地缓存中同步移除指定 key。
uniapp本地存储详解

示例代码

try {
	uni.removeStorageSync('storage_key');
} catch (e) {
	// error
} 
uni.clearStorage()

清理本地数据缓存。

示例

uni.clearStorage();
uni.clearStorageSync()

同步清理本地数据缓存。

示例

try {
	uni.clearStorageSync();
} catch (e) {
	// error
}

注意事项

  • uni.setStorageSync和uni.getStorageSync都是同步方法,调用后会阻塞线程,所以在使用时需要注意不要在UI线程中频繁调用这些方法,以免影响应用性能。
  • uni.setStorageSync保存的数据大小不能超过10MB。
  • uni.setStorageSync保存的数据只能在当前小程序中访问,不能跨小程序或跨设备访问。
  • 如果要保存的数据较大或者需要长期保存,建议使用uni.setStorage和uni.getStorage方法,这两个方法是异步方法,不会阻塞线程。在实现上,它们可能会使用文件系统缓存等技术来提高读写效率。
  • H5端为localStorage,浏览器限制5M大小,是缓存概念,可能会被清理
  • App端为原生的plus.storage,无大小限制,不是缓存,是持久化的
  • 各个小程序端为其自带的storage api,数据存储生命周期跟小程序本身一致,即除用户主动删除或 超过一定时间被自动清理,否则数据都一直可用。
  • 微信小程序单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
  • 支付宝小程序单条数据转换成字符串后,字符串长度最大200*1024。同一个支付宝用户,同一个小程序缓存总上限为10MB。
  • 百度小程序策略详见、字节跳动小程序策略详见
  • 非App平台清空Storage会导致uni.getSystemInfo获取到的deviceId改变
  • 除此之外,其他数据存储方案:
    H5端还支持websql、indexedDB、sessionStorage
    App端还支持SQLite、IO文件等本地存储方案。

总结

当我们调用对应方法时,uniapp会将数据以键值对的形式存储在本地存储中。具体实现中,uniapp会将键值对转换成字节流,并将字节流写入到设备的存储器中。这个过程涉及到计算机底层存储原理的数据存储和字节对齐。在读取数据时,会根据指定的键,从本地存储中读取相应的数据。根据键的索引或哈希值,定位到存储器中相应的数据块,并读取字节流。然后,将字节流转换为相应的数据类型,供应用程序使用。调用uni.removeStorageSync方法,将指定键的数据从本地存储中移除。计算机会找到相应的数据块,并将其标记为可覆盖的状态,从而释放存储空间。

结语

以上就是uniapp提供的各种本地存储方式及其底层实现机制的简单罗列和使用示例,uniapp的本地存储的逻辑涉及到计算机数据的写入、读取、文件系统管理、磁盘块分配等底层技术。在实际开发中,我们应该根据需求选择合适的方法进行本地存储操作,并尽量减少对本地存储的频繁访问,以提高应用性能。文章来源地址https://www.toymoban.com/news/detail-492216.html

到了这里,关于uniapp本地存储详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue本地存储及用法

    目录 1.本地存储是什么? 2.本地存储的应用场景 3.存储的使用 4. 练习用法 1.本地存储是什么?         以文件的方式存储在本地,通过把数据存在浏览器中,用户不必每次都向服务器请求 获取同一个信息。在你离线时,使用本地存储的数据而不是向远端服务器上请求 数

    2024年02月09日
    浏览(49)
  • 2.本地存储

    1.作用: 可以将数据永久存储在本地(用户的电脑),除非手动删除,否则关闭页面也会存在 2.特性: ●可以多窗口(页面)共享(同一浏览器可以共享) ●以键值对的形式存储使用,键值除了数字型都要加引号 3.语法 注意:本地存储只能存储字符串数据类型 特性: ●生命周期为关闭

    2024年02月13日
    浏览(28)
  • Esxi本地存储丢失

    故障说明:     客户Esxi本地存储在VC和Esxi平台上都无法显示。 解决办法:     SSH登陆到Esxi底层可以看到该本地存储 记住上面的UUID,重新挂载 至此挂载成功

    2024年02月12日
    浏览(35)
  • 微信小程序本地存储

    当我们在使用微信小程序开发时,经常需要对一些数据进行存储,以便下次打开小程序时可以快速读取这些数据。微信小程序提供了本地存储的功能,方便我们进行数据的存取。接下来,我将介绍如何使用微信小程序中的本地存储功能。 微信小程序提供了两种方式来进行本地

    2024年02月13日
    浏览(38)
  • 实现本地存储函数useLocalStorage

     我们经常需要使用  LocalStorage  API,一个好用的可组合函数封装将帮助我们更好地使用它,让我们开始吧 👇: 其中的watch可以修改为以下方式: watchEffect:立即运行一个函数,同时响应式地追踪其依赖,并在依赖更改时重新执行。 watchEffect的特点可以查看watchEffect()和effect

    2024年01月23日
    浏览(22)
  • Unity实用功能:存储本地文件

       算是一个比较通用的小功能吧,很多时候由于我们需要将运行时候的一些数据存储为别的文件格式,比如txt文本或者png图片等,就需要用到这个功能。   写法也比较简单,具体函数如下:   我们写个简单的测试用例,测试下这个功能   然后启动下unity,看看测试结果:

    2024年02月08日
    浏览(45)
  • uniapp 图片本地缓存,本地路径离线使用

    功能介绍:uniapp 多张图片本地存储,下载进度条。 目前还差一个删除功能,有机会再加上

    2024年02月16日
    浏览(32)
  • K8S临时存储-本地存储-PV和PVC的使用-动态存储(StorageClass)

    容器中的文件在磁盘上是临时存放的,当容器崩溃或停止时容器上面的数据未保存, 因此在容器生命周期内创建或修改的所有文件都将丢失。 在崩溃期间,kubelet 会以干净的状态重新启动容器。 当多个容器在一个 Pod 中运行并且需要共享文件时,会出现另一个问题,跨所有容

    2024年04月16日
    浏览(48)
  • react native 本地存储 AsyncStorage

    An asynchronous, unencrypted, persistent, key-value storage system for React Native. Async Storage 只能用来储存字符串数据,所以为了去储存object类型的数据,得先进行序列化( JSON.stringify() )当你想要使用数据的时候,就可以使用 JSON.parse() An asynchronous, unencrypted, persistent, key-value storage system for

    2024年02月15日
    浏览(33)
  • 如何处理前端本地存储和缓存?

    聚沙成塔·每天进步一点点 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包