一文了解localStorage 和 sessionStorage

2024-06-13 14:36

本文主要是介绍一文了解localStorage 和 sessionStorage,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章导读:AI 辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是 JavaScript 的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。

这篇文章瑶琴带大家学习 JavaScript 中的localStorage 和 sessionStorage的用法

localStorage 和 sessionStorage 都是 window 对象的属性。它们在全局作用域内是可访问的,可以通过 window 对象来引用它们。

1.localStorage

  1. 永久性存储:数据在页面会话结束后依然存在,直到主动删除。

  2. 容量限制:大多数浏览器为 localStorage 提供了大约5MB的存储空间。

  3. 同源限制:只有来自同一源(协议、域名和端口号都相同)的页面才能共享 localStorage 中的数据。

// 存储数据 
localStorage.setItem('username', 'JohnDoe'); // 读取数据 
let username = localStorage.getItem('username'); 
console.log(username); // 输出: JohnDoe // 删除单个数据项 
localStorage.removeItem('username'); // 清空所有数据 
localStorage.clear();

2.sessionStorage

1.会话性存储:数据只在单个会话期间可用,即只在浏览器打开的情况下有效,并且页面一旦关闭,数据就会被清除。

2.容量限制:与 localStorage 类似,大多数浏览器也为 sessionStorage 提供了大约5MB的存储空间。

3.独立性:同一源的不同页面或标签页拥有独立的 sessionStorage 空间。

// 存储数据
sessionStorage.setItem('viewedPage', 'homepage');
// 读取数据let page = sessionStorage.getItem('viewedPage');console.log(page); 
// 输出: homepage
// 页面关闭或刷新后,sessionStorage 中的数据将被清除

下面是常用方法和属性:

setItem(key, value) - 将键值对存储在存储对象中。

getItem(key) - 从一个存储对象中读取数据。

removeItem(key) - 从一个存储对象中移除指定的键值对。

clear() - 清空存储对象中的所有数据。

key(index) - 可以从存储对象中按索引顺序获取一个键。

length - 返回存储对象中的键值对数量。

注意事项:

1.存储的数据是字符串类型,如果需要存储对象或其他数据类型,需要先转换为字符串(通常使用 JSON.stringify()),读取时再转换回原来的类型(使用 JSON.parse())。

2.Web存储不是加密的,不应该用来存储敏感信息。

3.Web存储的大小限制比Cookies宽松,但仍然有限,对于大量数据的存储,应考虑使用数据库或服务器端存储。

3. 案例

1.记住用户偏好:存储用户的首选语言、主题等偏好设置。

if (!localStorage.getItem('userTheme')) { localStorage.setItem('userTheme', 'light'); 
} 
let theme = localStorage.getItem('userTheme');// 根据主题设置页面样式

2.表单自动填充:存储用户之前填写的表单数据,以便在下次访问时自动填充。

// 存储表单数据 
localStorage.setItem('formData', JSON.stringify({ name: 'John Doe', email: 'john@example.com' }));// 在表单加载时自动填充数据 
let formData = JSON.parse(localStorage.getItem('formData')); 
if (formData) { document.getElementById('name').value = formData.name; document.getElementById('email').value = formData.email; 
}

对于前端来说,这两个属性都是Web存储 API 的一部分,它们提供了一种在用户浏览器中存储数据的方式,使得数据可以在不同的页面加载之间持久化存储,初学者可以结合上面的例子自己实践。

希望今天的内容对初学前端的朋友有所帮助。也希望每一个初学者都能成为一个优秀的前端开发工程师,加油。

最后啰嗦一句,好记性不如烂笔头,希望大家在学习的过程中养成做笔记的习惯,形成自己的知识体系。

这篇关于一文了解localStorage 和 sessionStorage的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057575

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

一文详解如何在Vue3中封装API请求

《一文详解如何在Vue3中封装API请求》在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时,下面我们来看看如何在Vue3项目中封装API请求,让你在实现功能时更加高效吧... 目录为什么要封装API请求1. vue 3项目结构2. 安装axIOS3. 创建API封装模块4. 封装API请求

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

一文带你搞懂Python中__init__.py到底是什么

《一文带你搞懂Python中__init__.py到底是什么》朋友们,今天我们来聊聊Python里一个低调却至关重要的文件——__init__.py,有些人可能听说过它是“包的标志”,也有人觉得它“没... 目录先搞懂 python 模块(module)Python 包(package)是啥?那么 __in

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字