IDE:HBuilder X 3.8.12
--
序章
前端存储数据的方式 有以下几种:
- JavaScript Cookie
- Web存储
- localStorage
- sessionStorage
- HTML5 Web SQL 数据库
- IndexedDB
本文测试其中的 Web存储:localStorage、sessionStorage。
- 添加数据
- 查看数据
- 普通数据
- JSON数据
- 删除数据
- 清空数据
localStorage
位于 window 对象下面。
存储 key/value 对 数据,其中,value的类型永远是 string。
存储大小限制:5MB~10MB,不同浏览器不同(见参考资料 #4)。
在页面存储数据,数据有效范围是 整个站点——协议+域名+端口。
有效时间:永久。或者,直到用户手动清理了数据时。
页面关闭后,再次打开该站点的,之前存储的数据仍然存在——可访问。
注意,使用时需要清理掉不用的数据,以免超过存储的最大限制。
测试方式:
页面1 写数据;
页面2 仅读取数据。
测试代码:
// window.localStorage
console.log('window.localStorage:');
console.log(window.localStorage);
console.log(typeof window.localStorage);
console.log(window.localStorage.length);
let len = window.localStorage.length;
for(let i=0; i<len; i++) {
console.log(i + ", " + window.localStorage.key(i));
}
// 添加
window.localStorage.setItem("key1", "第一个键");
window.localStorage.setItem("中文2", "第2个键");
// 添加 JSON
let jdata = {
name: 'name1',
age: 12.31
};
console.log('添加 JSON:');
window.localStorage.setItem('json1', jdata);
window.localStorage.setItem('json2Str', JSON.stringify(jdata));
let jarr = [1, 2, 3, 4];
console.log('添加 J array:');
window.localStorage.setItem('jarr1', jarr);
window.localStorage.setItem('jarr2Str', JSON.stringify(jarr));
let jarro = [
{
lat: 12.13,
lgt: 99.89
},
{
lat: 612.13,
lgt: 699.89
},
];
console.log('添加 J array:');
window.localStorage.setItem('jarro1', jarro);
window.localStorage.setItem('jarro2Str', JSON.stringify(jarro));
// 获取
console.log(window.localStorage.length);
len = window.localStorage.length;
for(let i=0; i<len; i++) {
let keyi = window.localStorage.key(i);
let vali = window.localStorage.getItem(keyi);
console.log(i + ", " + keyi + ", val=" + vali);
console.log(typeof vali);
console.log(vali);
if (vali[0] == '{') {
let pjdata = JSON.parse(vali);
console.log(pjdata);
}
if (vali[0] == '[' && ! vali.startsWith('[object Object')) {
let pjdata = JSON.parse(vali);
console.log(pjdata);
}
}
测试结果:
默认情况下,localStorage 是空的。下面的测试结果是在之前测试时留下的。
关于 JSON 数据的存取:
1、存入时,使用 JSON.stringify 函数 转换为字符串;
2、取出时,使用 JSON.parse 函数 转换为 JSON对象或数组;
3、JSON 数组中的元素是 基本数据类型(字符串、数字等)时,会用都好把 元素连起来(比如,1,2,3,4)。
总之,JSON数据存入时,需要转换。
除了,JSON数据,其它 JavaScript 对象 存入时,也需要做相应的处理。
测试新页面访问上面的数据:
写一个循环语句获取即可,参考上面的代码。
获取成功。
数据存储完毕,可以在 浏览器的控制台 查看存储的内容:
测试用的浏览器:
- Google Chrome Version 119.0.6045.124 (Official Build) (64-bit)
- Microsoft Edge 版本 110.0.1587.41 (正式版本) (64 位)
sessionStorage
和 localStorage 类似,不同点在于,仅在当前页面有效——单个页面!
注意,当前页面(窗口 或 标签页)关闭后,数据消失。
不提供 代码和测试结果了,测试方式 同 localStorage 。
把 上面代码的 localStorage 改为 sessionStorage 即可。
在实践中用法(猜测)
存储某些固定不变的数据,避免打开页面时再次请求,比如,国家地理信息。
打开页面,检查是否有数据,有的话就不请求后台。
可以节省一些带宽。
---END---
作者水平有限,如有错漏,欢迎指正。
本文链接:
https://www.cnblogs.com/luo630/p/17824066.html
参考资料
1、JavaScript 参考手册》JavaScript 存储对象
https://www.runoob.com/jsref/obj-storage.html
https://www.runoob.com/jsref/prop-win-localstorage.html
https://www.runoob.com/html/html5-webstorage.html
2、IndexedDB
https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API
3、HTML5 Web SQL 数据库
https://www.runoob.com/html/html5-web-sql.html
4、localstorage的存储大小
https://deepinout.com/html/localstorage/17_the_size_of_localstorage.html
5、
ben发布于博客园
ben发布于博客园
- 前端 sessionStorage localStorage前端sessionstorage缓存localstorage 前端sessionstorage localstorage cookies 前端sessionstorage localstorage cookie 前端sessionstorage localstorage sessionstorage localstorage cookie sessionstorage localstorage sessionstorage localstorage router cookie sessionstorage localstorage session cookie sessionstorage localstorage cookies vue sessionstorage localstorage elementui router