【JavaScript】本地存储(localStorage、sessionStorage、cookie)

news2024/11/13 7:38:04

文章目录

  • 【JavaScript】本地存储(localStorage、sessionStorage、cookie)
    • 一. 概念
    • 二. 本地存储特性
    • 三. 会话级存储
    • 四. 持久性存储
    • 五. cookie
    • 六. 本地存储的区别
      • (1) cookie和storage的区别
      • (2) localStorage和sessionStorage的区别
    • 七. 案例:记住用户名

【JavaScript】本地存储(localStorage、sessionStorage、cookie)

一. 概念

HTML5中增加了两种全新的数据存储方式:

WebStorageWebSQLDatabase

  • WebStorage可用于临时或永久保存客户端的少量数据。
  • WebSQLDatabase是客户端本地化的一套数据库系统,可以将大量的数据保存在客户端,无须与服务器端进行交互,极大地减轻了服务器端的压力。
  • WebStorage存储是HTML5为数据存储在客户端提供的一项重要功能,分为两种:sessionStorage(保存会话数据)和loaclStorage(在客户端长期保存数据)。

二. 本地存储特性

  1. 数据存储在用户浏览器中
  2. 设置、读取方便、甚至页面刷新不丢失数据
  3. 容量较大,sessionStorage约5M、localStorage约20M
  4. 只能存储字符串,但对象可以使用JSON.stringify()进行编码后存储

三. 会话级存储

window.sessionStorage

特点

  1. 生命周期结束为关闭浏览器窗口
  2. 在同一窗口(页面)下数据可以共享(不能跨页面共享)
  3. 以键值对的形式存储使用

(1) 存储数据

window.sessionStorage.setItem(key,value)
window.sessionStorage.setItem("a", 1000);
window.sessionStorage.setItem("b", 2000);

请添加图片描述

(2) 获取数据

window.sessionStorage.getItem(key)

如果sessionStorage内有这个key,则获得该key对应的value
如果sessionStorage内没有这个key, 则输出null

console.log(window.sessionStorage.getItem("a")); // 1000
console.log(window.sessionStorage.getItem("c")); // null

(3) 删除数据

window.sessionStorage.removeItem(key)
window.sessionStorage.removeItem("b");

(4) 删除所有数据

window.sessionStorage.clear()

实例

<input type="text" />
<button class="set">存储数据</button>
<button class="get">获取数据</button>
<button class="remove">删除数据</button>
<button class="del">清空所有数据</button>
<script>
   	var ipt = document.querySelector('input');
	var set = document.querySelector('.set');
	var get = document.querySelector('.get');
	var remove = document.querySelector('.remove');
	var del = document.querySelector('.del');
	set.addEventListener('click', function () {
    	var val = ipt.value;
    	sessionStorage.setItem('uname', val);
    	sessionStorage.setItem('pwd', val);
	})
	get.addEventListener('click', function () {
    	console.log(sessionStorage.getItem('uname'));
	})
	remove.addEventListener('click', function () {
    	console.log(sessionStorage.removeItem('uname'));
	})
	del.addEventListener('click', function () {
    	console.log(sessionStorage.clear('uname'));
	})
</script>

四. 持久性存储

window.localStorage

特点

  1. 生命周期永久生效,除非手动删除否则关闭页面也会存在
  2. 可以多窗口(页面)共享(同一浏览器可以共享)
  3. 以键值对的形式存储使用

(1) 存储数据

localStorage.setItem(key,value)
window.localStorage.setItem("a", 1000);
window.localStorage.setItem("b", 2000);

请添加图片描述

(2) 获取数据

localStorage.getItem(key)
console.log(window.localStorage.getItem("a")); // 1000
console.log(window.localStorage.getItem("c")); // null

(3) 删除数据

localStorage.removeItem(key)
window.sessionStorage.removeItem("b");

(4) 删除所有数据

localStorage.clear()

实例

<input type="text" />
<button class="set">存储数据</button>
<button class="get">获取数据</button>
<button class="remove">删除数据</button>
<button class="del">清空所有数据</button>
<script>
   	var ipt = document.querySelector('input');
	var set = document.querySelector('.set');
	var get = document.querySelector('.get');
	var remove = document.querySelector('.remove');
	var del = document.querySelector('.del');
	set.addEventListener('click', function () {
    	var val = ipt.value;
    	localStorage.setItem('uname', val);
    	localStorage.setItem('pwd', val);
	})
	get.addEventListener('click', function () {
    	console.log(localStorage.getItem('uname'));
	})
	remove.addEventListener('click', function () {
    	console.log(localStorage.removeItem('uname'));
	})
	del.addEventListener('click', function () {
    	console.log(localStorage.clear('uname'));
	})
</script>

五. cookie

特点

  1. 只能存储字符串,并且有自己的固定格式

    key=value;key2=value2;key3=value3
    
  2. cookie 存储有大小限制

    存储空间:4kb左右

  3. 存储的时效性

    默认是会话级别,可以手动设置过期时间

  4. 操作依赖服务器

    本地打开的页面不能操作cookie

    必须用服务器打开

  5. 跟随前后端请求自动携带

  6. 前后端都可以操作

  7. 存储的时候依赖域名

    使用哪个域名存储,就用哪个域名

    不能跨域名通讯

在vscode中测试:需要在服务器下打开

需要开启一个本地服务器,vscode中安装插件:live server
然后使用时:鼠标右键,点击open with live server

cookie 操作

  1. 设置一条cookie

    语法:

    document.cookie = 'key=value';
    
    document.cookie = "a=100";
    document.cookie = "b=200";
    
  2. 设置一条带有过期时间的cookie

    语法:

    document.cookie = 'key=value;expires=时间对象'
    

    注意:不管我们设置的时候什么时间,都按照世界标准时间计算

    var time = new Date();
    document.cookie = "a=100;expires=" + time;
    

    请添加图片描述

    要想设置一个30s之后过期的cookie

    要先拿到当前的时间,向前调整8小时,

    再向后设置需要过期的时间就可以。

    var time = new Date();
    // 向前调整8小时, 再向后推30s
    time.setTime(time.getTime() - 1000 * 60 * 60 * 8 + 30 * 1000);
    document.cookie = "a=100;expires=" + time;
    

案例:将获取到的cookie的值转换为对象形式

function getCookie() {
    // 1. 先拿到cookie
    var cookie = document.cookie;
    // 2. 准备一个空对象
    var obj = {};
    var arr = cookie.split(";"); // ['b=200', ' a=100']
    arr.forEach(function (item) {
        // item  b=200
        var t = item.split("="); // ['b', 100]
        var key = t[0];
        var value = t[1];
        obj[key] = value;
    });
    console.log(obj);
    return obj;
}
getCookie();

六. 本地存储的区别

(1) cookie和storage的区别

  1. 出现时间

    cookie 在JavaScript刚出现的时候就有了

    storage 是H5新增的新特性

  2. 存储大小

    cookie 4kb

    storage 20M

  3. 前后端交互

    storage 存储的数据不会跟随页面携带

    cookie 存储的数据会跟随页面请求自动携带

  4. 前后端操作

    storage 只能利用JavaScript操作

    cookie 前后端都可以操作

  5. 过期时间

    cookie 默认是会话级,可以手动设置过期时间

    storage 不能手动设置过期时间

(2) localStorage和sessionStorage的区别

  1. 过期时间

    localStorage 永久存储

    sessionStorage 临时存储

  2. 跨页面通讯

    localStorage 直接跨页面共享数据

    sessionStorage 只能是从当前窗口跳转的

  3. 共同点

    只能存字符串,不能存复杂数据类型

七. 案例:记住用户名

如果勾选记住用户名,下次用户名打开浏览器,就在文本框里面自动显示上次登录的用户名

<input type="text" id="username" />
<input
       type="checkbox"
       name=""
       id="remember"
       />记住用户名
<script>
    var username = document.querySelector('#username')
    var remember = document.querySelector('#remember')
    if (localStorage.getItem('username')) {
        username.value = localStorage.getItem('username')
        remember.checked = true
    }
    remember.addEventListener('change', function () {
        if (this.checked) {
            localStorage.setItem('username', username.value)
        }else{
            localStorage.removeItem('username')
        }
    })
</script>

效果图:

请添加图片描述

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

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

相关文章

ansible(第二天)

第二章&#xff1a;模块介绍 1.Ansible的三个命令模块 command shell raw 应尽量避免使用这三个模块来执行命令&#xff0c;因为其他模块大部分都是幂等性的&#xff0c;可以自动进行更改跟踪。 command、shell、raw不具备幂等性。注&#xff1a; 幂等性&#xff1a;简单来…

【2 - 随机森林 - 案例部分:随机森林在乳腺癌数据上的调参】菜菜sklearn机器学习

课程地址&#xff1a;《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期&#xff1a;sklearn入门 & 决策树在sklearn中的实现第二期&#xff1a;随机森林在sklearn中的实现第三期&#xff1a;sklearn中的数据预处理和特征工程第四期&#xff1a;sklearn中的降维算法…

vue3笔记案例——Suspense使用之骨架屏

文章目录skeleton组件sync组件Suspense使用skeleton组件 示例图 代码 <template><div class"sk"><div class"sk-2"><div class"sk-2-1"></div><div></div></div><hr><div class&qu…

亚马逊云科技 Build On -轻松搭建咖啡点单系统

【前言】 1、什么是Build On&#xff1f; Build On是亚马逊团队基于亚马逊云服务开发&#xff0c;打造的一系列可快速上手的实操性活动。通过通俗易懂的场景案例、简单快捷的开发路径&#xff0c;参与者可快速理解目标任务涉及的相关知识&#xff0c;同时对亚马逊云服务具备一…

【回答问题】ChatGPT上线了!推荐30个以上比较好的意图识别模型

【回答问题】ChatGPT上线了&#xff01;推荐30个以上比较好的意图识别github源码&#xff1f; 好的&#xff0c;这里列出 30 个相对比较优秀的意图识别 GitHub 源码&#xff1a; DeepPavlov Rasa Snips spaCy OpenAI GPT OpenAI DialogFlow ChatterBot Botpress Amazon Lex M…

ArcGIS基础实验操作100例--实验41提取道路面中心线

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验41 提取道路面中心线 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1…

2022,我遭遇的那些小事

前言 2022&#xff0c;总感觉一晃眼就过去了&#xff0c;不知不觉自己坚持更文已经一周年了。回顾这一周年&#xff0c;无论是在技术成长上还是职业发展上&#xff0c;都有了许多新的体会。 裁员风波 还记得是四、五月份的一个上午&#xff0c;原本还在紧张的加班赶项目&…

educoder数据结构与算法 队列 第2关 实现一个链接存储的队列

本文已收录于专栏 &#x1f332;《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》&#x1f332; 目录 任务描述 相关知识 编程要求 测试说明 AC_Code 任务描述 本关任务&#xff1a;实现 step2/CLnkQueue.cpp 中的CLQ_IsEmpty、CLQ_Length、CLQ_In和CLQ_Out四个操…

论文阅读和复现:去除PPG运动伪影的IEEE论文

论文阅读和代码复现&#xff1a; 《Combining Nonlinear Adaptive Filtering and Signal Decomposition for Motion Artifact Removal in Wearable Photoplethysmography》 基本介绍&#xff1a; 由于手腕运动造成的噪声&#xff1a;运动伪影&#xff0c;使得PPG方法的心率监…

shell-流程控制之条件判断

1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 补充&#xff1a;20G20971520kb [rootcotenos day06]# pwd /root/shell/day06 [rootcotenos day06]# vim free_men.sh #!/bin/bash f…

spring boot启动环境的配置与更改(dev,local,pro)包含单元测试环境

文件类型介绍 properties 该文件是一种key-value的格式&#xff0c;配置文件的特点是&#xff0c;它的Key-Value一般都是String-String类型的&#xff0c;因此我们完全可以用Map<String, String>来表示它。 用Properties读取配置文件非常简单。Java默认配置文件以.pro…

elasticsearch 7.9.3知识归纳整理(二)之es基本原理及使用kibana操作es的常见命令

es基本原理及使用kibana操作es的常见命令 一、es的基本原理与基础概念 1.1 倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值&#xff0c;而是由属性值来确定记录…

【机器学习】机器学习中常用的损失函数一览

问题 机器学习中常用的损失函数总结 前言 我们经常听到损失函数、代价函数和目标函数这三种说法&#xff0c;这三种说法有什么联系和区别呢&#xff1f;这里明确下&#xff1a; 损失函数 Loss Function 通常是针对单个训练样本而言的&#xff0c;给定一个模型输出 y^\hat{y…

设计模式 - UML类图

1. 什么是 UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统图形化、能表达软件设计中的动态与静态信息。L从目标系统的不同角度出发&#xff0c;定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图部署…

8种数据结构

快速介绍8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式&#xff0c;可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外&#xff0c;数据结构属于计算…

【回答问题】ChatGPT上线了!有哪些3D点云算法模型?3D点云算法模型实现代码?

有哪些3D点云算法模型&#xff1f; 3D点云算法的模型有很多种&#xff0c;以下是一些常见的算法模型&#xff1a; 归一化重心法&#xff08;Normalized point-to-point ICP&#xff09;&#xff1a;是一种常用的模型配准方法&#xff0c;用于将两个模型中的点匹配起来。 基于…

跨年晚会前夕,曹云金和前妻复合了

每到跨年晚会的时候&#xff0c;总会有大的新闻事件发生&#xff0c;比如说在今年跨年晚会前夕&#xff0c;主持人何炅的老父亲&#xff0c;就非常不幸地驾鹤西去了。话说主持人何炅&#xff0c;在父亲离开后坚强地主持节目&#xff0c;他泪眼婆娑的表情&#xff0c;也登上了各…

电子游戏销售之回归模型与数据可视化

电子游戏销售之回归模型与数据可视化 文章目录电子游戏销售之回归模型与数据可视化0、写在前面1、回归模型1.1 模型建立准备1.2 建立模型1.3 模型分析2、数据可视化3、参考资料0、写在前面 该篇文章的任务包括以下3个方面 检测与处理缺失值建立回归模型数据可视化 实验环境 Pyt…

我的2022年总结

我的2022年总结 行走于世&#xff0c;风大时要表现逆的风骨&#xff0c;风小时要表现顺的悠然。 我们可以转身&#xff0c;但是不必回头&#xff0c;即使有一天你发现自己走错了&#xff0c;你也应该转身大步朝着对的方向去&#xff0c;而不是回头埋怨自己错了。 一、旧事 …

INT201-Decision, Computation and Language(2)

文章目录5. Turing Machine5.1 TM Configuration5.2 TM Transitions5.3 TM Computation5.4 Language accepted by TM5.5 Decider5.6 Multi-tape TM5.6.1 Multi-tape TM equivalent to 1-tape TM5.7 Nondeterministic TM5.7.1 Address5.7.2 NTM equivalent to TM5.8 Enumerable …