网络Web存储之LocalStorage
文章目录
- LocalStorage介绍
- 定义
- 特点
- 兼容性
- 常用方法
- 存值
- 取值
- 删除指定键值对
- 清空所有键值对
- 通过索引获取键名
- 获取所有值
- 判断是否含有某个键(key)
- 拓展
- 遍历得到key
- 存储和读取复杂类型的数据
- 应用场景
LocalStorage介绍
定义
LocalStorage
是HTML5
提供的一种客户端存储机制,属于Web存储API的一部分。它允许网页在用户的浏览器中存储键值对数据,这些数据会以持久化的方式保存,除非用户手动清除浏览器缓存,或者通过 JavaScript
代码进行删除操作,否则数据将一直存储在用户的本地浏览器中。
从技术角度来看,LocalStorage
是 window
对象的一个属性,是一个存储对象,它提供了一些简单的方法来操作存储的数据,如 setItem
、getItem
、removeItem
和 clear
等,以实现数据的存储、读取、删除和清除所有数据的功能。
特点
- 持久性:
LocalStorage
存储的数据是永久的,除非用户主动清楚浏览器缓存或使用JavaScript
代码删除,否则数据将一直保留在浏览器中。 - 同源策略: 遵循同源策略,即不同源的页面无法访问彼此的
LocalStorage
数据,这里的同源指的是协议、域名和端口都相同。 - 容量较大: 一般来说,浏览器对
LocalStorage
的存储空间限制相对较大,通常可以达到 5MB 甚至更多,具体大小因浏览器而异。 - 简单易用: 提供了简单的 API,方便开发者进行数据的存储、读取和删除操作。
- 与服务器无关: 数据存储在本地浏览器,不需要与服务器进行交互,读取数据时可以直接从本地获取,提高了数据访问的速度,减轻了服务器的负担。
兼容性
LocalStorage
在现代浏览器中得到了广泛支持,包括 Chrome
、Firefox
、Safari
、Edge
等。然而,在一些旧版本的浏览器或某些特殊环境下,可能存在兼容性问题。在使用 LocalStorage
时,可以通过检测window.localStorage
是否存在来判断浏览器是否支持 LocalStorage
。例如:
if(typeof window.localStorage !== 'undefined') {//浏览器支持LocalStorage,,可以进行相关操作
} else {//浏览器不支持LocalStorage,给出提示或其他替代方案console.log("浏览器不支持LocalStorage");
}
常用方法
存值
存值方式一共有三种。
localStorage.setItem(key,value);
localStorage[key] = value
localStorage.key = value
用于将键值对存储到 LocalStorage
中。如果键已经存在,则更新其对应的值;如果键不存在,则创建一个新的键值对。注意:键和值的格式。例如:
//存储值
//第一种方式
localStorage.setItem('name', 'John');
//第二种方式
localStorage['name'] = 'john';
//第三种方式 第三种键值格式与前两种有差别
localStorage.name = 'john';
//更新
localStorage.setItem('name','sam');
//其他两种同样
取值
取值方式与存值方式类似,也有三种。
localStorage.getItem(key)
localStorage[key]
localStorage.key
根据指定的键获取对应的值。如果键不存在,则返回null
。
//取值
//第一种方式
localStorage.getItem('name');
//第二种方式
localStorage['name'];
//第三种方式 第三种键值格式与前两种有差别
localStorage.name;
删除指定键值对
localStorage.removeItem(key)
用于删除指定键的键值对。例如:
//删除键值为name的键值对
localStorage.removeItem('name');
清空所有键值对
localStorage.clear()
用于删除所有键值对。
通过索引获取键名
localStorage.key(index)
用于获取指定索引位置的键名。索引从 0 开始。例如:
localStorage.key(0);
//获取索引为0的键名
//返回值为键名
获取所有值
- `localStorage.valueOf()
取出所有的值,返回一个对象。
localStorage.valueOf();
//返回值 例如;
/** {* name:'john',* age:'22'* ...* }/
判断是否含有某个键(key)
localStorage.hasOwnProperty(key)
判断是否含有某个键(key),如果有返回true,没有则返回false
localStorage.hasOwnProperty('name');
拓展
遍历得到key
可以使用for
循环、 for...in
循环或 Object.keys()
方法来遍历 LocalStorage 中的所有键值对。
//for
for(let i = 0;i<localStorage.length;i++){//打印键console.log(localStorage.key(i));//打印值console.log(localStorage.getItem(localStorage.key(i)));
}//for in for(let key in localStorage) {if(localStorage.hasOwnPreperty(key)) {let value = localStorage.getItem(key);console.log(`${key}: ${value}`);}
}//使用Object.keys() 方法遍历
let keys = Object.keys(localStorage);
for(let key of keys) {let value = localStorage.getItem(key);console.log(`${key}: ${value}`);
}
存储和读取复杂类型的数据
LocalStorage
只能存储字符串类型的数据,但是可以存储JSON格式的数据,将复杂类型的数据通过JSON.stringify()
转换为JSON字符串进行存储,读取时使用JSON.parse()
还原。
在实际应用中,LocalStorage 可以用于存储一些用户偏好信息(如页面主题、字体大小)、表单数据(如自动保存用户未完成的表单输入)、缓存一些不经常更新的数据等,以提高用户体验和网站性能。但需要注意的是,由于存储的数据是明文的,不建议存储敏感信息,且存储容量有限,需要合理使用。
下面是一个存储和读取复杂对象的操作:
let user = {name:"Alice",age:20,hobbies:['reading','swimming'];
}
//存储对象,将对象转换为JSON字符串
localStorage.setItem('user',JSON.stringify(user));//读取对象,将存储于的JSON字符串转换为对象let storedUser = JSON.parse(localStorage.getItem('user'));
console.log(storedUser);
//输出: { name: 'Alice', age: 30, hobbies: ['reading','swimming'] }
应用场景
- 用户偏好设置:可以存储用户在网站上的个性化设置,如主题颜色、字体大小、语言偏好等。当用户下次访问网站时,直接从
LocalStorage
中读取这些设置,为用户提供一致的个性化体验。 - 缓存数据:对于一些不经常变化且需要频繁访问的数据,如网站的静态资源路径、一些基础配置信息等,可以将其存储在
LocalStorage
中。这样在页面加载时,可以直接从本地获取数据,减少服务器请求,提高页面加载速度。 - 离线应用:在一些离线应用中,
LocalStorage
可以用于存储应用所需的数据。例如,离线阅读应用可以将用户下载的书籍内容存储在LocalStorage
中,以便用户在没有网络的情况下也能阅读。 - 表单数据存储:当用户在填写表单时,如果因为某些原因需要暂停操作,下次打开页面时可以从
LocalStorage
中读取之前填写的数据并自动填充,避免用户重复输入。
相关文章:
网络Web存储之LocalStorage
文章目录 LocalStorage介绍定义特点兼容性常用方法存值取值删除指定键值对清空所有键值对通过索引获取键名获取所有值判断是否含有某个键(key)拓展遍历得到key存储和读取复杂类型的数据 应用场景 LocalStorage介绍 定义 LocalStorage 是HTML5提供的一种…...
HTML知识点复习
1.src 和 href 的区别 src:表示对资源的引用, src指向的内容会嵌入到其标签里。 当浏览器解析到该元素时候,会暂停其他资源的下载和处理, 直到将该资源加载、编译、执行完毕,所以js脚本一般会放在页面底部 href&…...
【Leetcode 热题 100】45. 跳跃游戏 II
问题背景 给定一个长度为 n n n 的 0 0 0 索引 整数数组 n u m s nums nums。初始位置为 n u m s [ 0 ] nums[0] nums[0]。 每个元素 n u m s [ i ] nums[i] nums[i] 表示从索引 i i i 向前跳转的最大长度。换句话说,如果你在 n u m s [ i ] nums[i] nums[i…...
《offer 来了:Java 面试核心知识点精讲 -- 原理篇》
在 Java 面试的战场上,只知皮毛可不行,面试官们越来越看重对原理的理解。今天就给大家分享一本能让你在面试中脱颖而出的 “武林秘籍”——《offer 来了:Java 面试核心知识点精讲 -- 原理篇》。 本书详细介绍了Java架构师在BAT和移动互联网公司面试中常被问及的核心知识,内…...
Spring Boot中的自动配置原理是什么
Spring Boot 自动配置原理 Spring Boot 的自动配置机制基于 条件化配置,通过 EnableAutoConfiguration 注解来启用。自动配置的核心原理是 基于类路径和环境条件来推断所需要的配置,Spring Boot 会根据项目中引入的依赖和当前环境来自动装配相关的配置项…...
蓝桥杯3525 公因数匹配 | 枚举+数学
题目传送门 这个题目是一个数学题,由于只需要找到存在大于1的公因数的两数,所以比较方便的做法是统计每一个数的(质)因数。可以通过筛法统计质因数降低复杂度,但是直接枚举因数也可以满足要求。使用字典记录每个因数出…...
elasticsearch基础
分布式搜索引擎01 1. 初始elasticsearch 1.1. 了解ES 1.1.1. elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在github搜索代码: 在电…...
【JsonViewer】Json格式化
使用 Notepad 对 Json 数据进行格式化处理,使数据在结构上更清晰 1.在线安装 安装之后,重启应用,在插件菜单栏即可看到 JsonViewer 选项,在 Notepad 中放入 Json 数据,点击 Format Json 进行数据格式化 2.离线安装 …...
线性代数概述
矩阵与线性代数的关系 矩阵是线性代数的研究对象之一: 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,是线性代数中的核心概念之一。矩阵的定义和性质构成了线性代数中矩阵理论的基础,而矩阵运算则简洁地表示和…...
计算机毕业设计Python+卷积神经网络租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Linux(DISK:raid5、LVM逻辑卷)
赛题拓扑: 题目: DISK 添加4块大小均为10G的虚拟磁盘,配置raid-5磁盘。创建LVM命名为/dev/vg01/lv01,大小为20G,格式化为ext4,挂在到本地目录/webdata,在分区内建立测试空文件disk.txt。[root@storagesrv ~]# yum install mdadm -y [root@storagesrv ~]# mdadm -C -n …...
RIME-CNN-LSTM-Attention多变量多步时序预测Matlab实现
SCI一区级 | Matlab实现RIME-CNN-LSTM-Multihead-Attention多变量多步时序预测 目录 SCI一区级 | Matlab实现RIME-CNN-LSTM-Multihead-Attention多变量多步时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RIME-CNN-LSTM-Multihead-Attention霜冰算法…...
机器学习中的方差与偏差
文章目录 方差与偏差1.1 数据1.1.1 数据的分布1.1.2 拟合 1.2 方差与偏差1.2.1 泛化误差的拆分1.2.2 理解方差偏差 1.3 方差-偏差trade-off1.3.1 方差-偏差trade-off1.3.2 方差与偏差诊断 1.4 降低策略1.4.1 噪声1.4.2 高偏差1.4.3 高方差 方差与偏差 1.1 数据 1.1.1 数据的分…...
Ubuntu 22.04虚拟机安装配置调整(语言输入法字体共享剪切板等等
2025.01.07安装配置Ubuntu 22.04 记一下 快捷键 截屏 在设置-键盘-快捷键查看 跟搜到的不一样…不过shiftprint感觉也够用 安装 用的是VMware 参考:VMware中安装配置Ubuntu(2024最新版 超详细) 调教(? 语言 改了…...
[创业之路-255]:《华为数字化转型之道》-1-主要章节、核心内容、核心思想
目录 前言:数字化转型对于企业而言,是一种全方位的变革 一、主要章节 1、认知篇(第1~2章)- Why 2、方法篇(第3~5章)- How 3、实践篇(第6~10章)- 实践 4、平台篇(第…...
Java 接口安全指南
Java 接口安全指南 概述 在现代 Web 应用中,接口(API)是前后端交互的核心。然而,接口的安全性常常被忽视,导致数据泄露、未授权访问等安全问题。本文将详细介绍 Java 中如何保障接口安全,涵盖以下内容&am…...
Redis学习笔记1【数据类型和常用命令】
Redis学习笔记 基础语法 1.数据类型 String: 最基本的类型,可以存储任何数据,例如文本或数字。示例值为 hello world。Hash: 用于存储键值对,适合存储对象或结构体。示例值为 {"name": "Jack", "age": 21}。…...
Oracle graph 图数据库体验-安装篇
服务端安装 环境准备 安装数据库 DOCKER 安装23AI FREE ,参考: https://container-registry.oracle.com/ords/f?p113:4:111381387896144:::4:P4_REPOSITORY,AI_REPOSITORY,AI_REPOSITORY_NAME,P4_REPOSITORY_NAME,P4_EULA_ID,P4_BUSINESS_AREA_ID:1…...
Android 13 动态显示隐藏 HomeButton,RecentsButton
com.android.launcher3.taskbar.NavbarButtonsViewController.initButtons mEnabledValue状态<T> StatePropertyHolder(T target, IntPredicate enabledCondition,Property<T, Float> property, float enabledValue, float disabledValue) {mEnableCondition = ena…...
前端开发中的状态管理与网络请求封装
本文将对比 Vuex 和 Pinia 在状态管理中的使用,并介绍如何封装 Axios 进行网络请求。此外,我们还将讨论动态路由、404 页面跳转以及面包屑导航的实现。 话不多说,正文开始~~~ 一、状态管理:Vuex 与 Pinia 对比 1. Vuex Vuex 是…...
AI 大爆发时代,音视频未来路在何方?
AI 大模型突然大火了 回顾2024年,计算机领域最大的变革应该就是大模型进一步火爆了。回顾下大模型的发展历程: 萌芽期:(1950-2005) 1956年:计算机专家约翰麦卡锡首次提出“人工智能”概念,标志…...
30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <5> 5分钟集成好caffeine并使用注解操作缓存
快速导航 <1> 5分钟快速创建一个springboot web项目 <2> 5分钟集成好最新版本的开源swagger ui,并使用ui操作调用接口 <3> 5分钟集成好druid并使用druid自带监控工具监控sql请求 <4> 5分钟集成好mybatisplus并使用mybatisplus generator自…...
STM32 FreeRTOS中断管理
目录 FreeRTOS的中断管理 1、STM32中断优先级管理 2、FreeRTOS任务优先级管理 3、寄存器和内存映射寄存器 4、BASEPRI寄存器 5、FreeRTOS与STM32中断管理结合使用 vPortRaiseBASEPRI vPortSetBASEPRI 6、FromISR后缀 7、在中断服务函数中调用FreeRTOS的API函数需注意 F…...
第10章:Python TDD优化货币类方法与引入工厂方法
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
嵌入式硬件篇---基本组合逻辑电路
文章目录 前言基本逻辑门电路1.与门(AND Gate)2.或门(OR Gate)3.非门(NOT Gate)4.与非门(NAND Gate)5.或非门(NOR Gate)6.异或门(XOR Gate&#x…...
回归人文主义,探寻情感本质:从文艺复兴到AI时代,我的情感探索之旅
回归人文主义,探寻情感本质:从文艺复兴到AI时代,我们的情感探索之旅 多年来,我们的团队一直关注人工智能,尤其是AI在音乐领域的应用研究。随着技术的不断演进,我们也不断反思:在“算法、代码、…...
接上回--综合AIDemo测试
一,前言 上回外挂了知识库之后,我们需要使用知识库中的信息,让AI为我们实际处理业务上的需求。 这里我们让AI扮演公司的人事助手,帮我们处理员工请假的业务。 具体流程如下 感知用户需要请假提取用户请假信息获取用户数据库中…...
几何数据结构之四叉树与八叉树
几何数据结构之四叉树与八叉树 四叉树的定义四叉树深度的计算公式推导假设:计算过程:1. 划分空间:2. 节点容纳的最小距离:3. 解出深度:4. 考虑常数项: 总结: 八叉树 四叉树的定义 四叉树&#…...
postman请求参数化
postman界面介绍 一、使用环境变量(Environment Variables)进行参数化 1、在请求中使用环境变量 在请求的url、请求头(Headers)、请求体(Body)等部分都可以使用环境变量。 URL 部分示例 点击 Postman 界面右上角的 “眼睛” 图标(Environment Quick Look)打开环境管理…...
java实现word转html(支持docx及doc文件)
private final static String tempPath "C:\\Users\\xxx\\Desktop\\Word2Html\\src\\test\\";//图片及相关文件保存的路径public static void main(String argv[]) {try {JFileChooser fileChooser new JFileChooser();fileChooser.setDialogTitle("Select a …...
<电子幽灵>开发笔记:BAT基础笔记(一)
BAT脚本基础笔记(一) 介绍 费曼学习法最重要的部分,即把知识教给一个完全不懂的孩子——或者小白。 为了更好的自我学习,也为了让第一次接触某个知识范畴的同学快速入门,我会把我的学习笔记整理成电子幽灵系列。 提示:作为低代码…...
Leetcode::3427.变长子数组求和
给你一个长度为 n 的整数数组 nums 。对于 每个 下标 i(0 < i < n),定义对应的子数组 nums[start ... i](start max(0, i - nums[i]))。 返回为数组中每个下标定义的子数组中所有元素的总和。 子数组 是数组中…...
通过以太网加载linux内核、设备树、根文件系统方法(以stm32MP135为例)
0 硬件平台 正点原子stm32MP135开发板 1 通过以太网加载linux内核、设备树、根文件系统方法(以stm32MP135为例) 在产品正式发布前,为了调试方便,我们可以使用以太网加载linux内核、设备树、根文件系统以加快调试速度。本文以stm3…...
mac配置stable diffusion以及模型出图优化
1. 基础stable diffusion webui安装 使用的工程是stable-diffusion-webui,直接clone下来即可。 然后创建一个conda环境,python为3.9 激活conda环境后,执行./webui.sh即可。脚本会自动安装必要的包,然后启动网页。 默认有一个sd…...
LeetCode热题100(子串篇)
LeetCode热题100 说是子串,其实是子区间~ 560. 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 思路 思路: 和为k的子数组,看到…...
从密码学原理与应用新方向到移动身份认证与实践
相关学习资料放下面啦! 记得关注❤️~后续分享更多资料 通过百度网盘分享的文件:从密码学原理与应... 链接https://pan.baidu.com/s/1mHpHkvPuf8DUwReQkoYQlw?pwdGza7 提取码:Gza7 复制这段内容打开「百度网盘APP 即可获取」 记…...
【Flink系列】9. Flink容错机制
9. 容错机制 在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。 9.1 检查点(Checkpoint) 9.1.1 检查点的保存 1)周期性的触发保存 “随时存档”确实恢复起来方便,可是需要我…...
【物联网】ARM核介绍
文章目录 一、芯片产业链1. CPU核(1)ARM(2)MIPS(3)PowerPc(4)Intel(5)RISC-V 2. SOC芯片(1)主流厂家(2)产品解决方案 3. 产品 二、ARM核发展1. 不同架构的特点分析(1)VFP(2)Jazelle(3)Thumb(4)TrustZone(5)SIMD(6)NEON 三、ARM核(ARMv7)工作模式1. 权限级别(privilege level)2.…...
spring的事物管理的认知
事物 它是一个原子操作要么全部不执行,要么全部执行成功,如果有一个失败也会撤销,它保证用户每一次的操作都是可靠的,即使时出现了错误也不至于破坏数据的完整性 它包含了四种特性: 原子性:保证事物要么…...
QT跨平台应用程序开发框架(3)—— 信号和槽
目录 一,基本概念 二,connect函数使用 2.1 connect 2.2 Qt内置信号和槽 2.3 一些细节 三,自定义信号和槽 3.1 自定义槽函数 3.2 自定义信号 3.3 带参数的信号槽 四,信号和槽的意义 五,信号和槽断开连接 六&…...
技术面试中的软素质技巧性答复集锦
1、请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研…...
JavaWeb项目——如何处理管理员登录和退出——笔记
一、知识点 1、WebServlet注解的使用 WebServlet注解是Servlet 3.0引入的一个特性,它允许开发者在Servlet类上使用注解来声明Servlet的一些属性,从而避免在web.xml文件中进行配置。这种方式简化了Servlet的配置过程,使得代码更加简洁&#…...
函数递归的介绍
1.递归的定义 在C语言中,递归就是函数自己调用自己 上面的代码就是 main 函数在函数主体内 自己调用自己 但是,上面的代码存在问题:main 函数反复地 自己调用自己 ,不受限制,停不下来。 最终形成死递归,…...
昇腾环境ppstreuct部署问题记录
测试代码 我是在华为昇腾910B3上测试的PPStructure。 import os import cv2 from PIL import Image #from paddleocr import PPStructure,draw_structure_result,save_structure_res from paddleocr_asyncio import PPStructuretable_engine PPStructure(show_logTrue, imag…...
《知识图谱:鸿蒙NEXT中人工智能的智慧基石》
在鸿蒙NEXT系统的人工智能应用中,知识图谱技术犹如一座智慧基石,为系统的智能化提供了强大的知识支撑,开启了更智能、更高效、更个性化的交互新时代。 提升语义理解能力 知识图谱以其结构化的知识表示方式,将各种实体和它们之间…...
Springboot项目Jackson支持多种接收多种时间格式
前言 在springboot项目中经常会使用Jackson框架,当前端给后端传输时间类型时,我们一般需要先配置好时间格式,否则后端无法接收。以下是一些配置方法 统一配置 spring:jackson:time-zone: GMT+8date-format: yyyy-MM-dd HH:mm:ss这种配置就是要求前端统一传输的格式是yyyy-…...
go语言zero框架通过chromedp实现网页在线截图的设计与功能实现
在 GoZero 框架中实现网页在线截图的功能,可以通过集成 chromedp 库来控制 Chrome 浏览器进行截图。chromedp 是一个基于 Chrome DevTools 协议的 Go 包,可以用来在 Go 程序中模拟浏览器操作,如页面截图、DOM 操作、表单提交等。 下面是一个…...
基于深度学习的视觉检测小项目(十四) 用SQLite数据库进行用户管理
在开始做用户管理之前,先要了解一下SQLite数据库的基础知识:https://blog.csdn.net/xulibo5828/category_12785993.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12785993&sharereferPC&sharesourcexulibo5828&sharefrom…...
【2024年华为OD机试】 (B卷,100分)- 敏感字段加密(Java JS PythonC/C++)
一、问题描述 题目描述 给定一个由多个命令字组成的命令字符串: 字符串长度小于等于 127 字节,只包含大小写字母、数字、下划线和偶数个双引号;命令字之间以一个或多个下划线 _ 进行分割;可以通过两个双引号 "" 来标识包含下划线 _ 的命令字或空命令字(仅包含…...
图像去雾数据集的下载和预处理操作
前言 目前,因为要做对比实验,收集了一下去雾数据集,并且建立了一个数据集的预处理工程。 这是以前我写的一个小仓库,我决定还是把它用起来,下面将展示下载的路径和数据处理的方法。 下面的代码均可以在此找到。Auo…...