前端知识点---本地存储(javascript)

localStorage 是浏览器提供的一个 本地存储 API,可以在用户的浏览器中存储数据,数据不会随页面刷新而丢失。

1. 基本用法

(1) 存储数据(setItem)


localStorage.setItem("username", "zhangsan");

存储 “username”: “zhangsan” 到本地。

(2) 读取数据(getItem)


let user = localStorage.getItem("username");
console.log(user); // "zhangsan"

获取 localStorage 里 “username” 的值。

(3) 删除数据
删除单个数据(removeItem)


localStorage.removeItem("username");

清空所有数据(clear)


localStorage.clear();
  1. 存储对象
    localStorage 只能存字符串,要存对象的话,需要用 JSON.stringify() 转换:

<!-- 存储对象可以实现多条数据  --><script>const obj={name:'张三', age:18, gender:'男'}localStorage.setItem('obj', obj)//前面的obj是键, 后面是值 不一样 console.log(localStorage.getItem('obj'));// 因为只能存字符串 所以结果是[object Object]// 解决:需要将复杂数据类型转换成ISON字符串,在存储到本地语法:JSON.stringify(复杂数据类型)localStorage.setItem('obj', JSON.stringify(obj))console.log(localStorage.getItem('obj'));//但是这是字符串形式

在这里插入图片描述
在这里插入图片描述

读取时需要 JSON.parse() 解析回来:

console.log(JSON.parse(localStorage.getItem('obj') ));

在这里插入图片描述

3. 实际案例:存储商品数据


let products = [{ id: 1, title: "商品1", price: 100 },{ id: 2, title: "商品2", price: 200 },
];// 存储商品列表
localStorage.setItem("products", JSON.stringify(products));// 读取商品列表
let savedProducts = JSON.parse(localStorage.getItem("products"));
console.log(savedProducts);

4. sessionStorage vs localStorage

特性localStoragesessionStorage
存储时间永久存储,页面关闭后仍然存在仅在 当前标签页 有效,关闭标签页数据就没了
存储大小约 5MB约 5MB
作用域同源的所有页面都能访问只在当前页面的 标签页 内有效

简单来说:

localStorage 用于长期存储数据,例如用户设置、购物车数据等。

sessionStorage 用于短期存储,例如表单数据、临时会话信息等。

5. localStorage 监听(storage 事件)

当 同一浏览器的不同页面 修改 localStorage 时,其他页面可以监听变化:


window.addEventListener("storage", (event) => {console.log("localStorage 变化:", event);
});

⚠ 同一页面不会触发 storage 事件,只有其他页面修改 localStorage 才会触发。

6. 适用场景

记住用户设置(如夜间模式)

存储用户的购物车数据

本地缓存 API 请求结果

跨页面共享数据

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

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

相关文章

神经网络能不能完全拟合y=x² ???

先说结论&#xff1a;关键看激活函数的选择 ReLU神经网络对非线性函数的拟合分析 ReLU神经网络对非线性函数&#xff08;如 y x 2 y x^2 yx2&#xff09;的拟合只能是逼近&#xff0c;而无法实现数学意义上的完全重合。这一结论源于ReLU的分段线性本质与目标函数的非线性结…

14.流程自动化工具:n8n和家庭自动化工具:node-red

n8n 安装 docker方式 https://docs.n8n.io/hosting/installation/docker/ #https://hub.docker.com/r/n8nio/n8n docker pull n8nio/n8n:latest docker rm -f n8n; docker run -it \ --network macvlan --hostname n8n \ -e TZ"Asia/Shanghai" \ -e GENERIC_TIME…

哈密尔顿路径(Hamiltonian Path)及相关算法题目

哈密尔顿路径要求访问图中每个顶点恰好一次&#xff0c;通常用于解决旅行商问题&#xff08;TSP&#xff09;或状态压缩DP问题。 哈密尔顿路径&#xff08;Hamiltonian Path&#xff09;是指在一个图中经过每个顶点恰好一次的路径。如果这条路径的起点和终点相同&#xff08;即…

面试算法高频02-树

树类型对比 数据结构定义节点特点遍历方式常见操作时间复杂度&#xff08;平均&#xff09;时间复杂度&#xff08;最坏&#xff09;空间复杂度&#xff08;最坏&#xff09;与其他结构关系应用场景树有根节点&#xff0c;分层级&#xff0c;包含父子、兄弟节点及子树关系的非…

数论4 组合数

目录 前言 求法一 代码 求法二 代码 求法三 代码 求法四 代码 前言 今天要将最后一部分&#xff0c;主要涉及组合数的四种求法。 前置知识 组合数的通项公式&#xff1a; 组合数的递推公式&#xff1a; 卢卡斯定理&#xff1a; 我们今天需要求的四种求法主要基…

构建自己的私有 Git 服务器:基于 Gitea 的轻量化部署实战指南

对于个人开发者、小型团队乃至企业来说&#xff0c;将项目代码托管在 GitHub、Gitee 等公共平台虽然方便&#xff0c;但也存在一定的隐私与可控性问题。 搭建一套私有 Git 代码仓库系统&#xff0c;可以实现对源码的完全控制&#xff0c;同时不依赖任何第三方平台&#xff0c;…

Linux操作系统 4.Linux实用操作

一、各类小技巧&#xff08;快捷键&#xff09; 1.CTRL C 强制停止 1.Linux某些程序的运行&#xff0c;如果想要强行停止它&#xff0c;可以使用ctrlc 2.命令输入错误&#xff0c;也可以通过快捷键ctrl c,退出当前输入&#xff0c;重新输入&#xff0c;或者ctrlc跳过当前这…

react redux的学习,单个reducer

redux系列文章目录 一 什么redux&#xff1f; redux是一个专门用于做状态管理的JS库(不是react插件库)。它可以用在react, angular, vue等项目中, 但基本与react配合使用。集中式管理react应用中多个组件共享的状 简单来说&#xff0c;就是存储页面的状态值的一个库&#xf…

PCI与PCIe接口的通信架构是主从模式吗?

PCI&#xff08;Peripheral Component Interconnect&#xff09;总线在通信架构上本质是主从模式&#xff0c;但其具体实现和角色分配在不同版本&#xff08;如传统PCI与PCI Express&#xff09;中存在差异。以下是详细分析&#xff1a; 传统PCI总线的主从模式 (1) 基本架构 主…

java项目挂机自动重启操作指南

前段时间有个伙伴问我&#xff0c;java项目挂机怎么自动重启。。。。。。今天就写一个 .sh脚本来实现应用挂机的自动重启功能 #!/bin/bash # 查询mita的进程个数 countps -ef | grep mita.jar | grep -v "grep" | wc -l # echo $count nowtimedate "%Y-%m-%d %H…

开放最短路径优先 - OSPF【LSA详细】

目录 LSA的头部结构 LSA类型 LSA数据包 LSA的主要作用是传递路由信息。 LSA的头部结构 共占20个字节&#xff0c;不同类型的LSA头部字段部分都是相同的。 链路状态老化时间(Link-State Age) 2个字节。指示该条LSA的老化时间&#xff0c;即它存在了多长时间&#xff0c;单位…

SpringBoot+Spring+MyBatis相关知识点

目录 一、相关概念 1.spring框架 2.springcloud 3.SpringBoot项目 4.注解 5.SpringBoot的文件结构 6.启动类原理 二、相关操作 1.Jar方式打包 2.自定义返回的业务状态码 3.Jackson 4.加载配置文件 5.异常处理 三、优化配置 1.简化sql语句 2.查询操作 复杂查询 一…

《双影奇境》手机版上线?ToDesk用跨平台技术实现「全设备云电脑3A游戏」

《双影奇境》是由Hazelight Studios研发发行的一款双人合作冒险类游戏&#xff0c;玩家们在游戏中将扮演米欧和佐伊两位风格迥异的女作家&#xff0c;剧情讲述的是她们被骗进入一台意在窃取创意的机器后便陷入了自己创作的故事之中&#xff0c;并且必须相互依靠&#xff0c;努力…

【教程】Windows下 Xshell 连接跳板机和开发机

需求 使用远程连接工具 Xshell 连接跳板机&#xff0c;再从跳板机连接开发机&#xff0c;用户登陆方式为使用密钥。 方法 首先&#xff0c;建立一个会话&#xff0c;用于配置跳板机信息和开发机转跳信息&#xff1a; 在【连接】页面&#xff0c;给跳板机取个名字&#xff0c…

如何快速入门物联网单片机开发?

背景 物联网单片机硬件开发涉及多个阶段&#xff0c;元器件是否“自己设计”取决于具体需求。以下是详细解答和学习方案&#xff1a; 一、元器件是否自己设计&#xff1f; 通用元器件&#xff1a; 大多数情况下&#xff0c;开发者直接使用现成的标准化元器件&#xff08;如电阻…

每日一题(小白)模拟娱乐篇11

由题可知就是要求计算一个数字&#xff0c;可以整除10进制的每一位&#xff0c;亦可以整除8进制和16进制的每一位。要求找出第2023个能够在三个进制下同时被10进制整除的数字。 Java中已经封装了进制转换的方法&#xff0c;以下是一些常用的转换方法&#xff1a;&#x1f447;…

阿里巴巴langengine二次开发大模型平台

阿里巴巴LangEngine开源了&#xff01;支撑亿级网关规模的高可用Java原生AI应用开发框架 - Leepy - 博客园 阿里国际AI应用搭建平台建设之路(上) - 框架篇 基于java二次开发 目前Spring ai、spring ai alibaba 都是java版本的二次基础能力 重要的是前端工作流 如何与 服务端的…

MINIQMT学习课程Day8

获取qmt账号的资金账号后&#xff0c;我们进入下一步&#xff0c;如何获得当前账号的持仓情况 还是之前的步骤&#xff0c;打开qmt&#xff0c;选择独立交易&#xff0c; 之后使用pycharm&#xff0c;编写py文件。 from xtquant import xtdata from xtquant.xttrader import…

在QGIS中将矢量数据导出为JSON

在QGIS中将矢量数据导出为JSON的完整操作指南如下&#xff0c;支持GeoJSON标准格式及自定义配置&#xff1a; 一、标准GeoJSON导出&#xff08;推荐&#xff09; 适用场景&#xff1a;生成符合OGC标准的地理JSON文件&#xff0c;适用于Web地图开发 准备图层 确保目标图层在QG…

Netty——连接超时 与 断开重连

文章目录 1. 处理连接超时和断开重连的原因2. 处理连接超时和断开重连的方法2.1 处理连接超时2.1.1 步骤一&#xff1a;配置连接超时时间2.1.2 步骤二&#xff1a;监听连接结果 2.2 处理断开重连2.2.1 步骤一&#xff1a;监听连接断开事件2.2.2 步骤二&#xff1a;实现重连逻辑…