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

news2024/11/15 17:23:34

文章目录

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

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/131177.html

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

相关文章

力扣2. 两数相加

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

java实现随机获取封面图片

大家好&#xff0c;我是雄雄。 前言 最近阳的很多&#xff0c;大家都注意身体啊&#xff1b; 今天给大家分享一篇&#xff1a;java如何实现随机获取七牛云obs中的图片&#xff0c;主要用于给文章随机添加封面&#xff0c;因为固定一个封面的话&#xff0c;会显得很单一&#x…

企业注册信息如何识别真假?企业四要素API有什么好处?

企业注册信息越来越多&#xff0c;如何才能识别企业的真假&#xff0c;就需要有一套检验信息真伪的工具&#xff0c;这里我们分享的《企业四要素》就是用以检验企业真假的一种新型防伪应用供大家选择&#xff1a; 1、企业名称&#xff0c;2、法人名称&#xff0c;3、法人身份证…

第十三篇 1+X考证 Web前端测试题Laravel篇(新)

*Laravel中文网&#xff1a;Laravel 中文网 为 Web 工匠创造的 PHP 框架 单选题 1、Laravel中入口文件所在路径是&#xff08; B &#xff09; A、项目/app B、项目/public C、项目/routes D、项目/vendor [ 知识点&#xff1a;如图 ] 2、下面哪个是Laravel闪存数据的方法…

js实现九九乘法表(两种方法)

方法一&#xff1a; 观察规律&#xff1a; 第一个数每行都是自增1。 我们发下第二个数都是从1开始&#xff0c;依次递增1&#xff0c;永远不大于前面的数。 前面数字每自增一次&#xff0c;后面数字自增一轮。 我们可以用双重for循环&#xff0c;外层初始值设为i&#xff0…

高并发内存池项目(C++实战项目)

文章目录&#x1f384;项目介绍◎项目来源▶项目源码◎内存池相关知识1、池化技术2、内存池3、内存池主要解决的问题4、malloc&#x1f384;设计思路◎第一阶段–设计一个定长的内存池适应平台的指针方案◎第二阶段–高并发内存池整体框架设计1.线程缓存&#xff08;thread cac…

第十二届蓝桥杯嵌入式省赛试题以及题解

原题展示 通读本试题后&#xff0c;可以知本试题所涉及到的模块有LCD显示、LED指示、按键切换、串口收发、定时器的PWM输出五个部分&#xff0c;试题的总体变化不大。在试题要求的所有功能中&#xff0c;串口这部分是侧重点&#xff0c;它既要负责收发数据&#xff0c;又要对数…

用C++播放音频

编译环境为codeblocks 20.03&#xff0c;编译器为mingw64非自带的版本&#xff08;版本号多少忘记了&#xff09; 头文件 #include<dsound.h> #include <mmsystem.h> #pragma comment ( lib, "winmm.lib" ) 播放音频代码 int play_sound() {mciSendStr…

linux搭建服务器的准备工作

一&#xff0c;操作环境 创建完虚拟机&#xff0c;安装命令行界面的linux操作系统&#xff08;centos8,rocky8,rhel8) 详细过程请看rhcsa第一天作业 二&#xff0c;为服务器配置白名单和安全组 1&#xff0c; 查看selinux的工作模式 使用命令getenforce查看 工作模式有以下三种…

JavaSE学习(一)

1.java的特点 一次编译&#xff0c;到处运行 2.转义字符 \t 制表符 \\ 单个\ \ 单引号 \" 双引号 \n 换行 \r 回车3.注释 1.单行注释 // 2.多行注释 /* */ 3.文档注释 注释内容可以被JDK提供的工具javadoc所解析&#xff0c;生成一套以网页文件形式体现的该程序的说…

三、MySQL 数据库的基本操作

文章目录一、前置知识二、SQL 语言2.1 SQL 语言的兴起与语法标准2.2 SQL 是什么及 SQL 能做什么2.3 SQL 语言规范2.4 SQL 语句分类三、认识数据库3.1 数据库基本概念3.2 数据库常用对象3.3 系统数据库四、创建数据库五、查看数据库六、选择数据库七、修改数据库八、删除数据库九…

2023年国家留学基金委(CSC)有关国别申请、派出注意事项

国家留学基金委&#xff08;CSC&#xff09;已开始陆续公布2023年度的各公派项目实施办法&#xff0c;我们关注到&#xff1a;尽管选派流程及办法与往年相比没有明显变化&#xff0c;但由于各国对于接收CSC出国留学人员的签证、保险等会有不同的要求&#xff0c;所以CSC专门细化…

RHCE第一天之Linux例行性工作at、crontab详解

文章目录一、学习内容总结1、单一执行的例行性工作at2、循环执行的例行性工作crontab二、作业at和crontab的使用一、学习内容总结 1、单一执行的例行性工作at **概念&#xff1a;**指仅处理执行一次就结束了的工作。 要使用单一工作调度时&#xff0c;linux上面需要有负责这个…

电磁兼容大作业

目录 作业一 滤波器1的仿真 作业二 滤波器2的仿真 1. 初始滤波器 2. 仅加金属通孔 3. 仅加拓展枝节 4. 完整的发夹滤波器 作业三 屏蔽 1. 仿真未加屏蔽时的S11 S12 S21 S22 2. 尝试3.37GHz学号的仿真 作业一 滤波器1的仿真 仿真模型可以得到S参数&#xff0c;观察曲线…

一个测试人写在2022年的一些小感受

抓住2022年的尾巴&#xff0c;作为一名测试人&#xff0c;聊聊我的一些小感受&#xff0c;也给自己的2023年加加油&#xff1a; 这里写目录标题一、 不同的赛道&#xff0c;但是每个赛道都需要打比赛二、软件质量很重要&#xff0c;但是测试人却不重要&#xff1f;&#xff01;…

深度学习目标检测_YOLOV1超详细解读

文章目录YOLO背景介绍YOLO的发家史YOLO核心思想YOLO实现细节Pr(Object)Pr(Object)Pr(Object)的概率计算Pr(Classi∣Object)Pr(Class_i ∣Object)Pr(Classi​∣Object)的概率计算YOLO网络设计归一化30维向量含义预测框的定位再筛选bounding box损失函数由浅入深逐一解析损失函数…

MySQL数据库基础面试题

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java面试题…

python中的封装和继承

目录 一.面向对象的三大特性 私有成员 使用私有成员 封装小结 二.继承 pass关键字 多继承 多继承注意事项 小结 三.复写和使用父类成员 复写父类成员的语法 调用父类同名成员 一.面向对象的三大特性 面向对象编程&#xff0c;是许多编程语言都支持的一种编程思想。 简…

【机器学习】基于Pytorch和GoogleNet的海面舰船图像分类

文章目录基于Pytorch和GoogleNet的海面舰船图像分类1. 问题概述2. 实验环境、依赖库与代码结构3. GoogleNet网络架构3.1 Inception结构3.2 辅助分类器4. GoogleNet网络特征提取说明4.1 低层特征提取4.2 Inception特征提取4.3 分类器特征提取5. 具体参数设计6. 实际代码说明7. 网…

关于ElasticSearch新建文档的姿势

定义如下mapping&#xff0c;并且创建索引&#xff0c;索引包括四个字段 有三个分片 (number_of_shards)&#xff0c;每个分片有一个副本分片(number_of_replicas) PUT books {"mappings": {"properties": {"book_id": {"type": &qu…