Vue基础(33)_web Storage(web存储)

web Storage(web存储)

Web Storage 是HTML5规范提供的客户端数据存储机制,属于计算机学科中的浏览器存储技术,外文名为web storage。其由 sessionStorage 和 localStorage 两部分组成,前者仅在浏览器会话期间保留数据,后者支持永久存储直至手动删除。

Window.localStorage(本地存储)

官方定义:只读的localStorage 属性允许你访问一个Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。

localStorage 类似 sessionStorage,但其区别在于:存储在 localStorage 的数据可以长期保留 ;而当页面会话结束------也就是说,当页面被关闭时,存储在 sessionStorage 的数据会被清除。应注意,无论数据存储在 localStorage 还是 sessionStorage ,它们都特定于页面的协议。

另外,localStorage 中的键值对总是以字符串的形式存储。 (需要注意,和 js 对象相比,键值对总是以字符串的形式存储意味着数值类型会自动转化为字符串类型).

未登录账号的情况下进行了某网站的商品搜索,搜索之后关闭浏览器,再次打开该网站,搜索历史中保存了之前的搜索记录。图示:

原理:借助浏览器的本地存储(localStorage) 将数据存到硬盘上,用于缓存数据。

如何查看浏览器本地存储?

每个网站都有自己的浏览器本地存储,谷歌浏览器可以通过鼠标右键检查 -Console(控制台) -移到箭头选more Tabs -Application(应用) -Storage(存储) -**Local storage(本地存储)**查看,不同浏览器查看的位置可能稍有不同,数据是以键值对的形式存储的。

window.localStorage的特点:

1、浏览器关闭数据也不会消失。

2、清空浏览器缓存数据会消失。

Window.sessionStorage(会话存储)

官方定义 :sessionStorage 属性允许你访问一个,对应当前源的 session Storage 对象。它与 localStorage 相似,不同之处在于 localStorage 里面存储的数据没有过期时间设置,而存储在 sessionStorage 里面的数据在页面会话结束时会被清除。

简而言之:会话完毕就表示浏览器关闭了。API完全同localStorage。浏览器只要关闭,数据就没了。

总结:

1、存储内容大小一般支持5MB左右(不同浏览器可能还不一样)。

2、浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。

3、相关API:

1、xxxStorage.setItem('key', 'value');

该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。

2、xxxStorage.getItem('key');

该方法接受一个键名作为参数,返回键名对应的值。

3、xxxStorage.removeItem('key');

该方法接受一个键名作为参数,并把该键名从存储中删除。

4、xxxStorage.clear()

该方法会清空存储中的所有数据。

补充:xxx 代表 local/session。

备注:

1、SessionStorage存储的内容会随着浏览器窗口关闭而消失。

2、LocalStorage存储的内容,需要手动清除 【包括:调用了removeItem、clear等API或者清空浏览器缓存】才会消失。

3、xxxStorage.getItem(xxx)如果xxx对应的value获取不到,那么getItem的返回值是null 。

4、JSON.parse(null)的结果依然是null。

示例:以下代码中,localStorage也可以全部替换为sessionStorage实现会话存储。按键:ctrl + f。

html 复制代码
<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <title>localStorage</title>
    <style>
        button {
            margin: 5px 0px;
        }
    </style>
</head>

<body>
    <h2>localStorage本地存储</h2>
    <button onclick="saveData()">点我保存一组数据</button><br>
    <button onclick="readData()">点我读取一组数据</button><br>
    <button onclick="deleteData()">点我删除某些数据</button><br>
    <button onclick="deleteAllData()">点我清空所有数据</button>
    <script>
        let p = { name: '王五', age: '18' }
        function saveData() {
            // window可省略。
            window.localStorage.setItem('msg', '张三');
            // 数字666和对象p等都不是string类型,默认自动调了toString()方法,转变成了字符型。
            localStorage.setItem('msg2', 666);
            localStorage.setItem('msg3', p);
            // JSON.stringify():将一个 JavaScript 对象或值转换为 JSON 字符串。方便解析。
            localStorage.setItem('msg4', JSON.stringify(p));
        }
        function readData() {
            console.log(localStorage.getItem('msg'));
            console.log(localStorage.getItem('msg2'));
            const result = localStorage.getItem('msg4');
            // 解析 JSON 字符串。
            console.log(JSON.parse(result))
        }
        function deleteData() {
            localStorage.removeItem('msg');
            localStorage.removeItem('msg3')
        }
        function deleteAllData() {
            localStorage.clear()
        }
    </script>
</body>

</html>
相关推荐
福兮说7 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理7 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
专业程序开发源8 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源8 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
小呆呆6668 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
凤城老人8 小时前
从 PyQt6 到 Electron:给 Edge TTS 做一个“多角色配音机“的踩坑手记
javascript·typescript·electron
Dovis(誓平步青云)8 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan9 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_9 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒10 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端