JavaScript 本地存储 (localStorage) 完全指南

news2025/6/8 11:49:47

文章目录

      • JavaScript 本地存储 (localStorage) 完全指南 🔐
        • 一、什么是 `localStorage`?💡
        • 二、如何使用 `localStorage`?🔧
          • 1. 存储数据
          • 2. 读取数据
          • 3. 删除数据
          • 4. 清空所有数据
        • 三、存储对象和数组的技巧 🎨
          • 1. 存储对象
          • 2. 读取对象
          • 3. 存储数组
          • 4. 读取数组
        • 四、`localStorage` 的常见应用场景 🌟
          • 1. 保存用户设置或偏好
          • 2. 记住用户登录状态
          • 3. 保存购物车内容
        • 五、`localStorage` 的限制和注意事项 ⚠️
        • 六、总结:轻松管理浏览器存储 🔄


JavaScript 本地存储 (localStorage) 完全指南 🔐

在现代网页应用中,本地存储localStorage)是一个非常有用的 Web API,它允许我们在用户的浏览器中存储数据,以便跨页面访问,并且数据会在浏览器会话结束后依然保持。这使得它成为在客户端存储和读取数据的理想选择,比如保存用户偏好、购物车内容或者应用状态等。

今天,我们将详细探讨如何使用 localStorage 来存储和管理数据,了解它的工作原理以及常见的使用场景。


一、什么是 localStorage?💡

localStorage 是 Web 存储的一部分,它允许我们将数据以键值对的形式保存在浏览器中。与 sessionStorage 不同,localStorage 存储的数据没有过期时间,它会一直保留,直到用户主动删除或浏览器清除数据为止。

  • 永久存储:数据存储在浏览器中,直到被显式删除。
  • 跨页面共享:同一源下(相同的协议、域名和端口),不同页面可以共享 localStorage 中存储的数据。
  • 同一浏览器有效:数据在同一浏览器窗口中可用,但跨浏览器不可共享。

二、如何使用 localStorage?🔧

localStorage 提供了简洁的 API 来进行数据存取。它支持以下几种常用操作:

  1. 存储数据:通过 localStorage.setItem() 方法来存储数据。
  2. 读取数据:通过 localStorage.getItem() 方法来读取数据。
  3. 删除数据:通过 localStorage.removeItem() 删除某个存储的项。
  4. 清除所有数据:通过 localStorage.clear() 清空所有存储的数据。
1. 存储数据

我们可以使用 localStorage.setItem(key, value) 来存储数据,其中 key 是存储项的名称(字符串类型),value 是数据的值(也必须是字符串类型)。

// 存储用户名
localStorage.setItem('username', 'Alice');
2. 读取数据

要从 localStorage 中读取存储的数据,可以使用 localStorage.getItem(key)。如果键不存在,返回 null

// 读取用户名
let username = localStorage.getItem('username');
console.log(username); // 输出: Alice
3. 删除数据

要删除存储在 localStorage 中的某项数据,可以使用 localStorage.removeItem(key)

// 删除用户名
localStorage.removeItem('username');
4. 清空所有数据

如果我们希望清空 localStorage 中的所有数据,可以使用 localStorage.clear()

// 清空所有数据
localStorage.clear();

三、存储对象和数组的技巧 🎨

localStorage 只能存储字符串类型的数据,但我们可以通过 JSON 来存储对象或数组。使用 JSON.stringify() 将对象或数组转化为字符串存储,使用 JSON.parse() 将字符串转化为对象或数组读取。

1. 存储对象
// 创建一个对象
let user = {
  name: 'Alice',
  age: 25
};

// 将对象转为 JSON 字符串并存储
localStorage.setItem('user', JSON.stringify(user));
2. 读取对象
// 从 localStorage 获取 JSON 字符串并转换为对象
let storedUser = JSON.parse(localStorage.getItem('user'));
console.log(storedUser.name);  // 输出: Alice
console.log(storedUser.age);   // 输出: 25
3. 存储数组
// 创建一个数组
let items = ['apple', 'banana', 'cherry'];

// 将数组转为 JSON 字符串并存储
localStorage.setItem('items', JSON.stringify(items));
4. 读取数组
// 从 localStorage 获取 JSON 字符串并转换为数组
let storedItems = JSON.parse(localStorage.getItem('items'));
console.log(storedItems);  // 输出: ["apple", "banana", "cherry"]

四、localStorage 的常见应用场景 🌟

localStorage 是一个非常强大的工具,可以用于很多实际场景,以下是一些常见的使用方式:

1. 保存用户设置或偏好

如果你希望在用户重新访问页面时,保持他们的设置或偏好(比如主题颜色、语言选择等),可以使用 localStorage 来存储这些设置。

// 用户选择了暗黑模式
localStorage.setItem('theme', 'dark');

// 当页面加载时,读取主题设置
let theme = localStorage.getItem('theme');
if (theme === 'dark') {
  document.body.classList.add('dark-theme');
}
2. 记住用户登录状态

你可以使用 localStorage 来保存用户的登录状态或身份信息,让用户下次访问时自动登录。

// 登录时,存储用户信息
let userInfo = {
  username: 'Alice',
  token: 'abc123'
};
localStorage.setItem('user', JSON.stringify(userInfo));

// 下次访问时检查用户是否登录
let loggedInUser = JSON.parse(localStorage.getItem('user'));
if (loggedInUser) {
  console.log('User is logged in:', loggedInUser.username);
}
3. 保存购物车内容

购物车内容通常会跨页面显示,使用 localStorage 可以在不同页面之间保持购物车的状态。

// 用户将商品加入购物车
let cart = ['item1', 'item2', 'item3'];
localStorage.setItem('cart', JSON.stringify(cart));

// 读取购物车内容
let cartItems = JSON.parse(localStorage.getItem('cart'));
console.log(cartItems);  // 输出: ["item1", "item2", "item3"]

五、localStorage 的限制和注意事项 ⚠️

虽然 localStorage 非常方便,但它也有一些限制和注意事项,开发者在使用时需要了解:

  1. 存储大小限制:每个域名在浏览器中能够使用的存储空间是有限的,通常为 5MB。不同浏览器可能会有不同的限制,存储超出限制时会抛出异常。
  2. 数据只能存储字符串localStorage 只能存储字符串,如果需要存储对象或数组,必须先将它们转换为 JSON 字符串。
  3. 跨域访问不可用localStorage 仅在同一个源(即相同的协议、域名和端口)下有效,跨域之间的 localStorage 数据不可共享。
  4. 安全性问题:数据存储在浏览器中并且没有加密,容易受到 XSS 攻击。因此,避免存储敏感信息,如密码、信用卡号等。

六、总结:轻松管理浏览器存储 🔄

localStorage 提供了一种非常简洁和高效的方式来在浏览器中持久化数据,它特别适用于存储一些不敏感、非临时的数据。通过 localStorage,你可以在客户端存储用户设置、登录信息、购物车内容等,并在多个页面间共享这些数据。

记住,localStorage 只适用于存储少量数据,对于更复杂或更大的数据存储需求,可以考虑使用 IndexedDB 等其他更强大的存储方式。

通过理解和运用 localStorage,你可以为用户提供更流畅的体验,同时减少与服务器的通信,提高网页性能。💪

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

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

相关文章

Python分形几何可视化—— 复数迭代、L系统与生物分形模拟

Python分形几何可视化—— 复数迭代、L系统与生物分形模拟 本节将深入探索分形几何的奇妙世界,实现Mandelbrot集生成器和L系统分形树工具,并通过肺部血管分形案例展示分形在医学领域的应用。我们将使用Python的NumPy进行高效计算,结合Matplo…

【超详细】英伟达Jetson Orin NX-YOLOv8配置与TensorRT测试

文章主要内容如下: 1、基础运行环境配置 2、Torch-GPU安装 3、ultralytics环境配置 4、Onnx及TensorRT导出详解 5、YOLOv8推理耗时分析 基础库版本:jetpack5.1.3, torch-gpu2.1.0, torchvision0.16.0, ultralytics8.3.146 设备的软件开发包基础信息 需…

Go语言学习-->项目中引用第三方库方式

Go语言学习–>项目中引用第三方库方式 1 执行 go mod tidy 分析引入的依赖有没有正常放在go.mod里面 找到依赖的包会自动下载到本地 并添加在go.mod里面 执行结果: 2 执行go get XXXX(库的名字)

每日Prompt:云朵猫

提示词 仰视,城镇的天空,一片形似猫咪的云朵,用黑色的简笔画,勾勒出猫咪的形状,可爱,俏皮,极简

AI浪潮下的IT行业:威胁、转变与共生之道

目录 前言1 AI在IT行业的具体应用场景1.1 软件开发中的AI助手1.2 运维与监控的智能化1.3 测试自动化与质量保障1.4 安全防护中的智能威胁识别 2 AI对IT从业者的实际影响2.1 工作内容的结构性变化2.2 技能结构的再平衡 3 IT从业者不可替代的能力与价值3.1 复杂系统的架构与抽象能…

基于功能基团的3D分子生成扩散模型 - D3FG 评测

D3FG 是一个在口袋中基于功能团的3D分子生成扩散模型。与通常分子生成模型直接生成分子坐标和原子类型不同,D3FG 将分子分解为两类组成部分:官能团和连接体,然后使用扩散生成模型学习这些组成部分的类型和几何分布。 一、背景介绍 D3FG 来源…

蓝耘服务器与DeepSeek的结合:引领智能化时代的新突破

🌟 嗨,我是Lethehong!🌟 🌍 立志在坚不欲说,成功在久不在速🌍 🚀 欢迎关注:👍点赞⬆️留言收藏🚀 🍀欢迎使用:小智初学…

无人机光纤FC接口模块技术分析

运行方式 1. 信号转换:在遥控器端,模块接收来自遥控器主控板的电信号。 2.电光转换:模块内部的激光发射器将电信号转换成特定波长的光信号。 3.光纤传输:光信号通过光纤跳线传输。光纤利用全内反射原理将光信号约束在纤芯内进行…

作为过来人,浅谈一下高考、考研、读博

写在前面 由于本人正在读博,标题中的三个阶段都经历过或正在经历,本意是闲聊,也算是给将要经历的读者们做个参考、排雷。本文写于2022年,时效性略有落后,不过逻辑上还是值得大家参考,若所述存在偏颇&#…

立志成为一名优秀测试开发工程师(第十一天)—Postman动态参数/变量、文件上传、断言策略、批量执行及CSV/JSON数据驱动测试

目录 一、Postman接口关联与正则表达式应用 1.正则表达式解析 2.提取鉴权码。 二、Postman内置动态参数以及自定义动态参数 1.常见内置动态参数: 2.自定义动态参数: 3.“编辑”接口练习 三、图片上传 1.文件的上传 2.上传后内容的验证 四、po…

算法练习-回溯

今天开始新的章节,关于算法中回溯法的练习,这部分题目的难度还是比较大的,但是十分锻炼人的思维与思考能力。 处理这类题目首先要注意几个基本点: 1.关于递归出口的设置,这是十分关键的,要避免死循环的产…

一文带你入门Java Stream流,太强了,mysqldba面试题及答案

list.add(“世界加油”); list.add(“世界加油”); long count list.stream().distinct().count(); System.out.println(count); distinct() 方法是一个中间操作(去重),它会返回一个新的流(没有共同元素)。 Stre…

FastAPI安全异常处理:从401到422的奇妙冒险

title: FastAPI安全异常处理:从401到422的奇妙冒险 date: 2025/06/05 21:06:31 updated: 2025/06/05 21:06:31 author: cmdragon excerpt: FastAPI安全异常处理核心原理与实践包括认证失败的标准HTTP响应规范、令牌异常的特殊场景处理以及完整示例代码。HTTP状态码选择原则…

阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库

阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库 最近帮朋友 完成一些运维工作 ,这里记录一下。 文章目录 阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库最近帮朋友 完成一些运维工作 ,这里记录一下。 阿里云 RDS MySQL 5.7 添加白名单1. 登录…

《Brief Bioinform》: 鼠脑单细胞与Stereo-seq数据整合算法评估

一、写在前面 基因捕获效率、分辨率一直是空间转录组细胞类型识别的拦路虎,许多算法能够整合单细胞(single-cell, sc)或单细胞核(single-nuclear, sn)数据与空间转录组数据,从而帮助空转数据的细胞类型注释。此前我们介绍过近年新出炉的Stereo-seq平台&…

基于Springboot的宠物领养系统

本系统是一个面向社会的宠物领养平台,旨在帮助流浪宠物找到新家庭,方便用户在线浏览、申请领养宠物,并支持管理员高效管理宠物、公告和用户信息。 技术栈: -后端: Java 8Spring BootSpring MVCMyBatis-PlusMySQL 8R…

Readest(电子书阅读器) v0.9.53

Readest 是一款开源电子书阅读器,专为沉浸式和深度阅读体验而设计。它是对Foliate的现代重写,利用Next. js 15和Tauri v2在macOS、Windows、Linux和Web上提供无缝的跨平台体验,并即将支持移动平台。 软件特色 多格式支持 支持EPUB、MOBI、K…

USART 串口通信全解析:原理、结构与代码实战

文章目录 USARTUSART简介USART框图USART基本结构数据帧起始位侦测数据采样波特率发生器串口发送数据 主要代码串口接收数据与发送数据主要代码 USART USART简介 一、USART 的全称与基本定义 英文全称 USART:Universal Synchronous Asynchronous Receiver Transmi…

UOS无法安装deb软件包

UOS无法安装deb软件包 问题描述解决办法: 关闭安全中心的应用隔离结果验证 问题描述 UOS安装Linux微信的deb包时,无法正常安装 解决办法: 关闭安全中心的应用隔离 要关闭-安全中心的应用隔离后才可以正常软件和运行。 应用安全----》 允许任意应用。 结果验证 # …

VUE前端实现自动打包成压缩文件

VUE前端实现自动打包成压缩文件 背景思路实现打包代码实现 尾巴 背景 做前端开发的兄弟们都经历过每次开发完成之后发包需要进行打包,然后将打包文件压缩。每次打好包了都得手动压缩一遍,就有点繁琐。今天我们就使用一种命令行自动压缩的方法&#xff0…