(JavaScript - 原生) WEB 本地存储
一、什么是 WEB 本地存储?
WEB 本地存储就是将数据以键值对的形式存储到本地。
-1).经过 WEB本地存储的数据究竟存储到了哪?
存储位置:
打开:(值 firstUseLocalStorage 就是要存储的值-> 后面代码中会有体现)
-2).WEB 本地存储的分类及介绍
WEB 本地存储分为两种:(localStorage、sessionStorage)> - 通过 localStorage 存储的数据会一直存在,除非你手动的进行删除(言外之意就是与你关不关闭当前网页/浏览器没有关系)。
> - 通过 sessionStorage 存储的数据会随着当前会话挂掉而消失。
二、为什么使用 WEB 本地存储?
我们都知道后端有数据库可以存储数据,但是随着前端的发展,我们的前端可能也需要存储一些数据,其中兼容性最好的就是这个 'cookie' ,但是 'cookie' 虽然兼容性好一些也有局限性,
(就比如每次都会被请求携带着发送给服务器)、
(每个cookie可以存储的数据的大小仅为4KB)、
(一个浏览器能创建的 Cookie 数量最多为 300 个,每个 Web 站点能设置的 Cookie 总数不能超过 20 个)
鉴于以上问题 H5 新特性的 WEB 本地存储机制应运而生。
三、怎么使用 WEB 本地存储?
1.localStorage:
运行以下代码:
<script>
window.onload = function () {
'use strict';
/**
* @author 刘杰
* @version 1.0
* WEB 存储
*/
/*
* -1).在新增的 H5 新特性中提供了一个功能叫做(WEB 存储也叫本地存储)
* -2).WEB 存储包括两种方式:
* -> localStorage => 通过这个方式存储的数据是一直有效的,除非你手动删除此数据。言外之意就是使用 localStorage 方式进行数据的存储与关闭当前页面/浏览器毫无关系。
*
* -> sessionStorage => 通过这个方式存储的数据只是在当前页面中有效,一旦页面挂掉数据就全部消失。
*
**/
// 测试之前先判断当前浏览器是否支持 WEB 本地存储
if(typeof Storage !== undefined) {
// 测试 localStorage 存储
// 存储数据的3种方式
// 1.点的方式
localStorage.userName = "LJ";
// 2.索引的方式
localStorage["userAge"] = 21;
// 3.通过自带 api 的方式
localStorage.setItem("userHobby", "敲代码 ...");
// 先运行上面的代码
}else {
console.error("Sorry, your browser does not support WEB local storage!");
}
}
</script>
什么也没有,但是此时我们的数据就已经被存储起来了。当我们关掉当前页面或者关闭当前浏览器的时候。
运行以下代码:
<script>
window.onload = function () {
'use strict';
/**
* @author 刘杰
* @version 1.0
* WEB 存储
*/
/*
* -1).在新增的 H5 新特性中提供了一个功能叫做(WEB 存储也叫本地存储)
* -2).WEB 存储包括两种方式:
* -> localStorage => 通过这个方式存储的数据是一直有效的,除非你手动删除此数据。言外之意就是使用 localStorage 方式进行数据的存储与关闭当前页面/浏览器毫无关系。
*
* -> sessionStorage => 通过这个方式存储的数据只是在当前页面中有效,一旦页面挂掉数据就全部消失。
*
**/
// 测试之前先判断当前浏览器是否支持 WEB 本地存储
if(typeof Storage !== undefined) {
// 测试 localStorage 存储
// 存储数据的3种方式
// 1.点的方式
// localStorage.userName = "LJ";
// 2.索引的方式
// localStorage["userAge"] = 21;
// 3.通过自带 api 的方式
// localStorage.setItem("userHobby", "敲代码 ...");
// 再运行下面的代码
console.log(`userName:${localStorage.userName}`);
console.log(`userName:${localStorage["userAge"]}`);
console.log(`userName:${localStorage.getItem("userHobby")}`);
}else {
console.error("Sorry, your browser does not support WEB local storage!");
}
}
</script>
依然可以取到值:
2.sessionStorage:
运行代码:
<script>
window.onload = function () {
'use strict';
/**
* @author 刘杰
* @version 1.0
* WEB 存储
*/
/*
* -1).在新增的 H5 新特性中提供了一个功能叫做(WEB 存储也叫本地存储)
* -2).WEB 存储包括两种方式:
* -> localStorage => 通过这个方式存储的数据是一直有效的,除非你手动删除此数据。言外之意就是使用 localStorage 方式进行数据的存储与关闭当前页面/浏览器毫无关系。
*
* -> sessionStorage => 通过这个方式存储的数据只是在当前页面中有效,一旦页面挂掉数据就全部消失。
*
**/
// 测试之前先判断当前浏览器是否支持 WEB 本地存储
if(typeof Storage !== undefined) {
// 测试 localStorage 存储
// 存储数据的3种方式
// 1.点的方式
// localStorage.userName = "LJ";
// 2.索引的方式
// localStorage["userAge"] = 21;
// 3.通过自带 api 的方式
// localStorage.setItem("userHobby", "敲代码 ...");
// 再运行下面的代码
// console.log(`userName:${localStorage.userName}`);
// console.log(`userName:${localStorage["userAge"]}`);
// console.log(`userName:${localStorage.getItem("userHobby")}`);
// 测试 sessionStorage 存储
// 存储数据的方式与 localStorage 一样也有 3种。
// 存储数据
sessionStorage.setItem("phone", "17803218829")
// 从当前页面进行取值
console.log(`phone:${sessionStorage.phone}`);
}else {
console.error("Sorry, your browser does not support WEB local storage!");
}
}
</script>
关闭页面以后 ->
运行代码:
<script>
window.onload = function () {
'use strict';
/**
* @author 刘杰
* @version 1.0
* WEB 存储
*/
/*
* -1).在新增的 H5 新特性中提供了一个功能叫做(WEB 存储也叫本地存储)
* -2).WEB 存储包括两种方式:
* -> localStorage => 通过这个方式存储的数据是一直有效的,除非你手动删除此数据。言外之意就是使用 localStorage 方式进行数据的存储与关闭当前页面/浏览器毫无关系。
*
* -> sessionStorage => 通过这个方式存储的数据只是在当前页面中有效,一旦页面挂掉数据就全部消失。
*
**/
// 测试之前先判断当前浏览器是否支持 WEB 本地存储
if(typeof Storage !== undefined) {
// 测试 localStorage 存储
// 存储数据的3种方式
// 1.点的方式
// localStorage.userName = "LJ";
// 2.索引的方式
// localStorage["userAge"] = 21;
// 3.通过自带 api 的方式
// localStorage.setItem("userHobby", "敲代码 ...");
// 再运行下面的代码
// console.log(`userName:${localStorage.userName}`);
// console.log(`userName:${localStorage["userAge"]}`);
// console.log(`userName:${localStorage.getItem("userHobby")}`);
// 测试 sessionStorage 存储
// 存储数据的方式与 localStorage 一样也有 3种。
// 存储数据
// sessionStorage.setItem("phone", "17803218829")
// 从当前页面进行取值
console.log(`phone:${sessionStorage.phone}`);
}else {
console.error("Sorry, your browser does not support WEB local storage!");
}
}
</script>
结果源数据丢失:
> - 补充无论是 localStorage 还是 sessionStorage 都有 clear 方法可以将所存储的全部数据进行清除。
> - 上面我们存储年龄的时候存进去的是一个数字但是取出却是一个字符串(说明WEB 本地存储会将所有的数据转换为字符串)。
> - web 本地存储还可以存储对象,但是建议这个对象必须是 Json 格式的,因为只有这样我们在将其取出复用的时候才会方便的多。
运行代码:
<script>
window.onload = function () {
'use strict';
/**
* @author 刘杰
* @version 1.0
* WEB 存储
*/
/*
* -1).在新增的 H5 新特性中提供了一个功能叫做(WEB 存储也叫本地存储)
* -2).WEB 存储包括两种方式:
* -> localStorage => 通过这个方式存储的数据是一直有效的,除非你手动删除此数据。言外之意就是使用 localStorage 方式进行数据的存储与关闭当前页面/浏览器毫无关系。
*
* -> sessionStorage => 通过这个方式存储的数据只是在当前页面中有效,一旦页面挂掉数据就全部消失。
*
**/
// 测试之前先判断当前浏览器是否支持 WEB 本地存储
if(typeof Storage !== undefined) {
// 测试 localStorage 存储
// 存储数据的3种方式
// 1.点的方式
// localStorage.userName = "LJ";
// 2.索引的方式
// localStorage["userAge"] = 21;
// 3.通过自带 api 的方式
// localStorage.setItem("userHobby", "敲代码 ...");
// 再运行下面的代码
// console.log(`userName:${localStorage.userName}`);
// console.log(`userName:${localStorage["userAge"]}`);
// console.log(typeof localStorage["userAge"]);
// console.log(`userName:${localStorage.getItem("userHobby")}`);
// 测试 sessionStorage 存储
// 存储数据的方式与 localStorage 一样也有 3种。
// 存储数据
// sessionStorage.setItem("phone", "17803218829")
// 从当前页面进行取值
// console.log(`phone:${sessionStorage.phone}`);
// 存储对象
var obj = {
name: "XXY",
action: "run"
};
obj = JSON.stringify(obj);
console.log(obj);
localStorage.setItem("obj", obj);
}else {
console.error("Sorry, your browser does not support WEB local storage!");
}
}
</script>
先关闭当前页面/浏览器(因为这次使用的是 localStorage 存储)
运行代码:
<script>
window.onload = function () {
'use strict';
/**
* @author 刘杰
* @version 1.0
* WEB 存储
*/
/*
* -1).在新增的 H5 新特性中提供了一个功能叫做(WEB 存储也叫本地存储)
* -2).WEB 存储包括两种方式:
* -> localStorage => 通过这个方式存储的数据是一直有效的,除非你手动删除此数据。言外之意就是使用 localStorage 方式进行数据的存储与关闭当前页面/浏览器毫无关系。
*
* -> sessionStorage => 通过这个方式存储的数据只是在当前页面中有效,一旦页面挂掉数据就全部消失。
*
**/
// 测试之前先判断当前浏览器是否支持 WEB 本地存储
if(typeof Storage !== undefined) {
// 测试 localStorage 存储
// 存储数据的3种方式
// 1.点的方式
// localStorage.userName = "LJ";
// 2.索引的方式
// localStorage["userAge"] = 21;
// 3.通过自带 api 的方式
// localStorage.setItem("userHobby", "敲代码 ...");
// 再运行下面的代码
// console.log(`userName:${localStorage.userName}`);
// console.log(`userName:${localStorage["userAge"]}`);
// console.log(typeof localStorage["userAge"]);
// console.log(`userName:${localStorage.getItem("userHobby")}`);
// 测试 sessionStorage 存储
// 存储数据的方式与 localStorage 一样也有 3种。
// 存储数据
// sessionStorage.setItem("phone", "17803218829")
// 从当前页面进行取值
// console.log(`phone:${sessionStorage.phone}`);
// 存储对象
var obj = {
name: "XXY",
action: "run"
};
obj = JSON.stringify(obj);
console.log(obj);
localStorage.setItem("obj", obj);
obj = eval("(" + localStorage["obj"] + ")");
console.log(Object.prototype.toString.call(obj));
console.log(obj["action"]);
}else {
console.error("Sorry, your browser does not support WEB local storage!");
}
}
</script>
结果:
这就是 WEB 本地存储的神奇之处:其实我们使用谷歌浏览器的 'Application' 就可以方便的查看我们存储的信息
> 总结:
- 为了弥补前端存储一些数据比较局限的问题,WEB 本地存储的出现正好解决了这个问题。
- 但是 web 本地存储分为两种
一种为(localStorage):
存储的数据长期有效,与是否关闭当前页面/浏览器无关,除非你手动删除数据否则一直存在。
另一种为(sessionStorage):
存储的数据有效期限只是局限于当前页面
- 所存储的数据都是键值对儿的形式
- WEB 本地存储会默认在存储的时候将其它的数据类型转换为字符串类型
- WEB 本地存储不仅可以存储简单的数据,还可以存储对象,但是这个对象前提是我们将其转换为 JSON 格式。
- 其真实文件默认存储路径 -> 请看最顶部 [什么是 WEB本地存储?]
- 最直观的查看可以借助谷歌浏览器中的 Application 。
以上就是这一期对于 H5 新增的特性之一 WEB 本地存储的浅显探究与说明,希望可以抛砖引玉,如有错误的地方还请指出,共同进步!