js本地存储api集合,区别及使用场景介绍

2024-07-21 17:31:11 257
在 JavaScript 中,本地存储相关的 API 主要包括 `localStorage`、`sessionStorage`、`IndexedDB` 和 `Cookie`。它们提供了在客户端存储数据的功能,适用于不同的使用场景。下面详细介绍它们的区别和使用场景,并提供示例代码。

localStorage

描述

localStorage 提供了一个持久化的存储方式,即使浏览器关闭后数据依然存在,直到被显式地删除。

常用方法和属性

方法/属性参数说明描述示例代码
localStorage.setItem(key, value)key (字符串), value (字符串)将指定的 key 和 value 存储localStorage.setItem('name', 'John');
localStorage.getItem(key)key (字符串)获取指定 key 的 valuelocalStorage.getItem('name'); // 'John'
localStorage.removeItem(key)key (字符串)删除指定 key 的数据localStorage.removeItem('name');
localStorage.clear()清空所有存储的数据localStorage.clear();
localStorage.length返回存储的键值对数量localStorage.length; // 0
localStorage.key(index)index (整数)通过索引获取存储的 keylocalStorage.key(0);

示例代码

// 存储数据
localStorage.setItem('username', 'Alice'); // 将键 'username' 和值 'Alice' 存储在 localStorage 中

// 获取数据
const user = localStorage.getItem('username'); // 获取键 'username' 对应的值
console.log(user); // 输出 'Alice'

// 删除数据
localStorage.removeItem('username'); // 删除键 'username' 及其对应的值

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

sessionStorage

描述

sessionStorage 提供了一个会话级别的存储方式,数据只在页面会话期间有效。页面会话在浏览器打开页面时开始,并在关闭页面或浏览器时结束。

常用方法和属性

方法/属性参数说明描述示例代码
sessionStorage.setItem(key, value)key (字符串), value (字符串)将指定的 key 和 value 存储sessionStorage.setItem('sessionKey', 'value');
sessionStorage.getItem(key)key (字符串)获取指定 key 的 valuesessionStorage.getItem('sessionKey'); // 'value'
sessionStorage.removeItem(key)key (字符串)删除指定 key 的数据sessionStorage.removeItem('sessionKey');
sessionStorage.clear()清空所有存储的数据sessionStorage.clear();
sessionStorage.length返回存储的键值对数量sessionStorage.length; // 0
sessionStorage.key(index)index (整数)通过索引获取存储的 keysessionStorage.key(0);

示例代码

// 存储数据
sessionStorage.setItem('sessionKey', 'sessionValue'); // 将键 'sessionKey' 和值 'sessionValue' 存储在 sessionStorage 中

// 获取数据
const sessionData = sessionStorage.getItem('sessionKey'); // 获取键 'sessionKey' 对应的值
console.log(sessionData); // 输出 'sessionValue'

// 删除数据
sessionStorage.removeItem('sessionKey'); // 删除键 'sessionKey' 及其对应的值

// 清空所有数据
sessionStorage.clear(); // 清空 sessionStorage 中的所有数据

IndexedDB

描述

IndexedDB 是一个低级 API,用于在客户端存储大量的结构化数据。它是一个事务型的数据库系统,允许存储和检索复杂的数据结构,包括文件和二进制数据。

常用方法和属性

方法/属性参数说明描述示例代码
indexedDB.open(name, version)name (字符串), version (整数, 可选)打开一个数据库,如果不存在则创建const request = indexedDB.open('myDatabase', 1);
request.onsuccess回调函数当数据库打开成功时触发request.onsuccess = (event) => { const db = event.target.result; };
request.onerror回调函数当数据库打开失败时触发request.onerror = (event) => { console.error('Database error:', event.target.error); };
db.createObjectStore(name, options)name (字符串), options (对象, 可选)创建一个对象存储(表)db.createObjectStore('users', { keyPath: 'id' });
objectStore.add(value)value (对象)向对象存储中添加一个新对象objectStore.add({ id: 1, name: 'Alice' });

示例代码

// 打开数据库
const request = indexedDB.open('myDatabase', 1);

request.onupgradeneeded = (event) => {
  const db = event.target.result;
  // 创建对象存储
  const objectStore = db.createObjectStore('users', { keyPath: 'id' });
};

request.onsuccess = (event) => {
  const db = event.target.result;
  // 事务
  const transaction = db.transaction('users', 'readwrite');
  const objectStore = transaction.objectStore('users');
  // 添加数据
  objectStore.add({ id: 1, name: 'Alice' });
};

request.onerror = (event) => {
  console.error('Database error:', event.target.error);
};

Cookie

描述

Cookie 是一种在客户端存储少量数据的方式,通常用于存储用户的会话信息和偏好设置。Cookie 数据会随每个 HTTP 请求一起发送到服务器。

常用操作

操作参数说明描述示例代码
设置 Cookiename (字符串), value (字符串), expires (日期字符串, 可选), path (字符串, 可选)设置一个新的 Cookiedocument.cookie = "username=John";
获取所有 Cookie获取所有 Cookie 的字符串const cookies = document.cookie;
删除 Cookiename (字符串)通过设置过期时间来删除 Cookiedocument.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

示例代码

// 设置 Cookie
document.cookie = "username=John; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/";

// 获取所有 Cookie
const cookies = document.cookie;
console.log(cookies); // 输出所有 Cookie 的字符串,如 "username=John; sessionToken=abc123"

// 删除 Cookie
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

区别与使用场景

API持久性存储大小数据结构典型使用场景
localStorage持久(直到被删除)约 5-10 MB字符串存储长期不变的用户设置、状态等
sessionStorage会话级别约 5-10 MB字符串存储会话数据,如临时表单数据、会话信息
IndexedDB持久(直到被删除)大量数据(理论上无限制)结构化数据(对象)存储大量结构化数据,如离线缓存、复杂数据存储
Cookie根据设置的过期时间来确定持久性约 4 KB字符串存储会话信息、用户偏好、追踪信息

通过这些存储方式,开发者可以根据具体需求选择合适的本地存储方案,从而更好地管理和利用客户端数据。