(三十)Vue之回顾本地存储webStorage

news2024/12/26 9:31:28

文章目录

  • webStorage
    • LocalStorage
    • sessionStorage
  • 改造TodoList案例为本地存储

Vue学习目录

上一篇:(二十九)Vue之组件化编码流程

下一篇:(三十一)Vue之自定义事件

webStorage

使用HTML5可以在本地存储用户的浏览数据。

早些时候,本地存储使用的是 cookie。但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以存储大量的数据,而不影响网站的性能.

数据以 键/值 对存在, web网页的数据只允许该网页访问使用。

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

浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。
通过F12可以进行应用程序项可以进行查看
本地存储代表localStorage、会话存储代表sessionStorage
在这里插入图片描述

相关API:

  1. xxxxxStorage.setItem('key', 'value');
    该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。

  2. xxxxxStorage.getItem('person');

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

  3. xxxxxStorage.removeItem('key');

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

  4. xxxxxStorage.clear()

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

LocalStorage

用于长久保存整个网站的数据,保存的数据没有过期时间,需要手动清除才会消失。
演示程序:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>localStorage</title>
</head>
<body>
    <h2>localStorage</h2>
    <button onclick="saveData()">点我保存数据</button>
    <button onclick="readData()">点我读取数据</button>
    <button onclick="deleteData()">点我删除数据</button>
    <button onclick="deleteDataAll()">点我清空数据</button>
    <script type="text/javascript">
        let p = {name:'张三',age:18}
        function saveData(){
            localStorage.setItem('msg','hello!')
            localStorage.setItem('msg2',666)
            localStorage.setItem('person',JSON.stringify(p))
        }
        function readData(){
            console.log(localStorage.getItem('msg'))
            console.log(localStorage.getItem('msg2'))
            console.log(localStorage.getItem('123'))//没有这个数据,会显示null
            console.log(JSON.parse(localStorage.getItem('person')))
        }
        function deleteData(){
            localStorage.removeItem('msg2')
        }
        function deleteDataAll(){
            localStorage.clear()
        }
    </script>
</body>
</html>

点击保存数据:
在这里插入图片描述
点击读取数据:
在这里插入图片描述
点击删除数据:
在这里插入图片描述

点击清空数据:
在这里插入图片描述

sessionStorage

用于临时保存同一窗口(或标签页)的数据,存储的内容会随着浏览器窗口关闭而消失。
演示程序:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>sessionStorage</title>
</head>
<body>
    <h2>sessionStorage</h2>
    <button onclick="saveData()">点我保存数据</button>
    <button onclick="readData()">点我读取数据</button>
    <button onclick="deleteData()">点我删除数据</button>
    <button onclick="deleteDataAll()">点我清空数据</button>
    <script type="text/javascript">
        let p = {name:'张三',age:18}
        function saveData(){
            sessionStorage.setItem('msg','hello!')
            sessionStorage.setItem('msg2',666)
            sessionStorage.setItem('person',JSON.stringify(p))
        }
        function readData(){
            console.log(sessionStorage.getItem('msg'))
            console.log(sessionStorage.getItem('msg2'))
            console.log(sessionStorage.getItem('123'))//没有这个数据,会显示null
            console.log(JSON.parse(sessionStorage.getItem('person')))
        }
        function deleteData(){
            sessionStorage.removeItem('msg2')
        }
        function deleteDataAll(){
            sessionStorage.clear()
        }
    </script>
</body>
</html>

点击保存数据:
在这里插入图片描述
关闭窗口重新打开:数据消失
在这里插入图片描述
点击读取数据:
在这里插入图片描述
点击删除数据:
在这里插入图片描述
点击清空数据:
在这里插入图片描述

改造TodoList案例为本地存储

之前的TodoList案例我们发现,在刷新页面时,数据会重新初始化为
在这里插入图片描述
我们可以考虑把数据存储在localStorage里,页面加载时读取localStorage里的数据,读取不到就赋给一个空数组,然后采用监视属性,对todos进行深度监视,当todos发生改变时,把数据重新写入localStorage里
实现:
App组件:

data(){
    return{
      /*todos:[
        {id:'001',title:'吃饭',done:true},
        {id:'002',title:'睡觉',done:false},
        {id:'003',title:'玩游戏',done:true}
      ]*/
      todos:JSON.parse(localStorage.getItem('todos')) || []
    }
  },
  watch:{
    todos:{
      deep:true,
      handler(value){
        localStorage.setItem('todos',JSON.stringify(value))
      }
    }
  }

效果:
页面刚加载时是没有数据的
在这里插入图片描述
添加数据会写入localStorage
在这里插入图片描述
关闭浏览器,重新打开,读取localStorage的todos数据
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础(二十二):文件操作

文章目录 文件操作 一、文件操作的作用 二、文件的基本操作 1、文件操作步骤

同时开启的revit模型和navisworks如何同步呢?

一、 Navisworks与Revit同步问题 同时开启的revit模型和同时开启的navisworks如何同步呢? 1.如图1所示打开了一个revit模型 将模型保存在指定的路径上&#xff0c;然后通过直接拖拽的方式在navisworks manage打开模型文件&#xff0c;过程中会出现读条状态&#xff0c;如图2所…

【MySQL进阶教程】 索引使用与设计原则

前言 本文为 【MySQL进阶教程】 索引使用与设计原则 相关知识&#xff0c;下边将对索引的使用&#xff08;包括&#xff1a;验证索引效率&#xff0c;最左前缀法则&#xff0c;范围查询&#xff0c;索引失效情况&#xff0c;SQL提示&#xff0c;覆盖索引&#xff0c;前缀索引&a…

Struts2获取表单数据

Struts2获取表单数据Struts2获取表单数据1、原始Servlet方法2、属性封装3、表达式封装4、模型驱动封装Struts2获取表单数据 在Struts2中获取表单数据或提交路径的参数值的方式有4种。如下&#xff1a; 原始Servlet方法属性封装表达式封装模型驱动封装 1、原始Servlet方法 该…

文章书写方法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

Python爬虫 xpath解析基础

今天继续给大家介绍Python爬虫相关知识&#xff0c;本文主要内容是Python爬虫 xpath解析基础。 一、xpath简介 xpath&#xff0c;即XML Path Language&#xff0c;是一种用来确定XML文档中某部分位置的语言&#xff0c;Xpath以XML为基础&#xff0c;可以提供用户在数据结构树…

8、可观测性--链路追踪

文章目录链路追踪服务之间的依赖Span 的构成Span 之间关系链路图链路追踪与 Dapper链路追踪的作用链路查询性能分析拓扑图依赖关系跨应用/语言采样率链路追踪 首先&#xff0c;我来带你了解一下什么是链路追踪&#xff1f; 服务之间的依赖 在前言中介绍了数据的来源&#xf…

运营|为什么需要配置https?

什么是HTTPS、它带来了什么? 从名字来看,它比http多了一个“s”,这个“s”表示安全。目的在于提供更安全的HTTP通道,即HTTP下加入SSL层并且加密。太详细的我就不再这里说了,再说我就要抄百度百科了。简单来说,不同于HTTP使用80端口,HTTPS使用443端口,HTTPS还需要一个付…

【手写 Vue2.x 源码】第七篇 - 阶段性梳理

一&#xff0c;前言 上篇,介绍了 Vue 数据初始化流程中&#xff0c;Vue 实例上数据代理的实现&#xff0c;核心思路如下&#xff1a; 将 data 暴露在 vm._data 实例属性上利用 Object.defineProperty 将 vm.xxx 操作代理到 vm._data 上 本篇&#xff0c;对当前版本的数据劫持…

[VP]河南第十三届ICPC大学生程序竞赛 J.甜甜圈

前言 传送门 : https://ac.nowcoder.com/acm/contest/17148/J 题意 : 给定两个甜甜圈堆 , 每次只能吃所有中最甜的那一个 , 否则的话就移动 询问最小的移动步骤 思路 : 很明确的一个目标 , 寻找当前最大值并且求出距离 那么我们考虑将两个甜甜圈堆进行合并 , 使得变成一个…

LeetCode:17. 电话号码的字母组合

17. 电话号码的字母组合1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果1&#xff09;题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同…

【C++入门】C向C++过渡(上)

前言在正式进入C之前&#xff0c;我们首先要对C有一个基本的认知。这里我就不过多的进行描述了&#xff0c;有兴趣的可以去网络搜索一番。总而言之&#xff0c;从名称上面我们也可以看得出来&#xff0c;C是在C的基础上进行不断地优化发展。事实上确实是这样&#xff0c;C语言中…

k8s部署gitlab

Gitlab以容器方式运行&#xff0c;需要持久化如下几个目录中的数据: 持久化本地位置 容器位置 使用 ${sc}/data /var/opt/gitlab 用于存储应用程序数据。 ${sc}/logs /var/log/gitlab 用于存储日志。 ${sc}/config /etc/gitlab 用于存储 GitLab 配置 文件。 1、下载…

C语言柔性数组的‘美‘

目录 柔性数组的使用和概念 柔性数组的特点 柔性数组与指针的区别 柔性数组的好处 柔性数组的使用和概念 arr[]编译 C99 中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就叫做『柔性数组』成员。 柔性数组的特点 1、柔性数组成员前必须至少有一个其他…

黑龙江创维E900V22C_S905L3(B)_安卓9.0_开启设置隐藏无线_完美线刷固件包

黑龙江创维E900V22C_S905L3(B)_安卓9.0_开启隐藏设置无线WIFI_完美线刷固件包 提示&#xff1a;大部分芯片均为S905L3A&#xff0f;AB&#xff0c;这两个是可以通刷的。 1、此分享固件包芯片特殊&#xff0c;芯片为S905L3&#xff0c;还有S905L3B芯片&#xff0c;理论上通刷…

C++设计模式:建造者模式(详解+案例代码)

文章目录建造者模式实现步骤实现代码案例一&#xff1a; 组装电脑案例二&#xff1a;汉堡店点餐优缺点建造者模式 建造者模式是一种对象创建型模式之一&#xff0c;用来隐藏复合对象的创建过程&#xff0c;它把复合对象的创建过程加以抽象&#xff0c;通过子类继承和重载的方式…

【JavaEE】设计模式之单例模式

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaEE】 ✈️✈️本篇内容:设计模式之单例模式。 &#x1f680;&#x1f680;代码存放仓库gitee&#xff1a;JavaEE初阶代码存放&#xff01; ⛵⛵作者简介&am…

Redis 连接池报错:jwtCalibrateHandler 48 max number of clients reached

问题[ERROR 2023-01-06 15:37:58,877] jwtCalibrateHandler 48 max number of clients reached早上突然看到反馈说redis连接异常&#xff0c;就是这个&#xff1a;max number of clients reached。问题很显然就是redis连接数超了.原因分析redis maxclients 是redis server的重要…

VMware vCenter Server Appliance空间不足问题处理

原创作者&#xff1a;运维工程师 谢晋 前提提要 客户环境为VSAN环境&#xff0c;VCSA版本为6.7&#xff0c;偶然间发现VSAN监控的性能不能正常打开&#xff0c;如下图&#xff1a;     后登陆https://VCSAIP:5480发现出现告警&#xff0c;报错log日志满了 故障处理 开…

rabbitmq+netcore6 【3】Publish/Subscribe:发布/订阅

文章目录1&#xff09;前言2&#xff09;临时队列3&#xff09;绑定4&#xff09;综合以上代码准备工作1、生产者2、消费者13、消费者25&#xff09;验证官网教程原文链接&#xff1a; https://www.rabbitmq.com/tutorials/tutorial-three-dotnet.html翻译版参考链接&#xff1…