it编程 > 编程语言 > Javascript

前端本地数据存储的几种常见方式总结

28人参与 2025-02-14 Javascript

1. cookies

cookies 是浏览器用来存储数据的小文件,通常用于存储一些小量的数据,尤其是会话信息(如用户认证信息)。它们在客户端存储,可以跨页面访问,并且可以配置过期时间。

特点:

示例:

// 设置 cookie
document.cookie = "username=john; expires=fri, 31 dec 2024 23:59:59 gmt";

// 获取 cookie
let cookies = document.cookie;
console.log(cookies);

// 删除 cookie(通过设置过期时间为过去的日期)
document.cookie = "username=; expires=thu, 01 jan 1970 00:00:00 gmt";

缺点:

2. localstorage

localstorage 提供了一种存储在客户端的数据存储方式,数据存储在浏览器中,即使页面关闭,数据依然会保留,直到显式删除。

特点:

示例:

// 设置 localstorage
localstorage.setitem('username', 'john');

// 获取 localstorage
let username = localstorage.getitem('username');
console.log(username); // "john"

// 删除 localstorage
localstorage.removeitem('username');

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

优点:

缺点:

3. sessionstorage

sessionstorage 是一种基于会话的存储方式,它与 localstorage 类似,但数据在浏览器窗口或标签页关闭时会自动清除。每个浏览器标签页或窗口都有独立的 sessionstorage

特点:

示例:

// 设置 sessionstorage
sessionstorage.setitem('sessionkey', 'value');

// 获取 sessionstorage
let value = sessionstorage.getitem('sessionkey');
console.log(value); // "value"

// 删除 sessionstorage
sessionstorage.removeitem('sessionkey');

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

优点:

缺点:

4. indexeddb

indexeddb 是一种低级别的 api,用于存储大量结构化数据。它允许你存储更复杂的数据类型,如文件和二进制数据,并且支持异步操作。

特点:

示例:

// 打开(或创建)数据库
let request = indexeddb.open("mydatabase", 1);

request.onsuccess = function(event) {
  let db = event.target.result;

  // 创建一个对象存储
  let objectstore = db.createobjectstore("users", { keypath: "id" });

  // 插入数据
  objectstore.add({ id: 1, name: "john", age: 30 });

  // 获取数据
  let getrequest = objectstore.get(1);
  getrequest.onsuccess = function() {
    console.log(getrequest.result); // { id: 1, name: "john", age: 30 }
  };
};

request.onerror = function(event) {
  console.error("database error:", event.target.errorcode);
};

优点:

缺点:

5. web sql database(已废弃)

web sql 是一种基于 sql 的本地数据库 api,它可以在浏览器中存储结构化的数据,使用类似于 sql 的语法进行操作。这个 api 已被大多数浏览器弃用,推荐使用 indexeddb

示例:

let db = opendatabase('mydatabase', '1.0', 'test database', 2 * 1024 * 1024);

// 创建表格
db.transaction(function (tx) {
  tx.executesql('create table if not exists logs (id unique, log)');
});

// 插入数据
db.transaction(function (tx) {
  tx.executesql('insert into logs (id, log) values (1, "foobar")');
});

特点:

缺点:

6. file system api (仅限于浏览器扩展或特定环境)

file system api 提供了更接近操作本地文件系统的能力,允许浏览器内的 web 应用读写本地文件。这个 api 目前仅在特定的浏览器环境或扩展中可用,且并非所有浏览器都支持。

特点:

缺点:

总结:

存储方式存储容量生命周期支持的数据类型特点
cookies4kb会话或设置过期时间简单的键值对用于跨请求存储小型数据,常用于身份认证
localstorage5mb(浏览器差异)永久存储键值对(字符串)简单易用,数据永久存储
sessionstorage5mb(浏览器差异)会话期间键值对(字符串)会话级别的存储,浏览器关闭时清空
indexeddb较大(数 mb 或更多)永久存储对象、数组、二进制数据支持复杂数据类型,异步操作
web sql较大(不固定)永久存储结构化数据(sql)被弃用,不推荐使用
file system api受限(特定环境)永久存储文件允许直接操作文件,通常用于浏览器扩展

根据应用需求选择合适的存储方式,通常情况下 localstorage 和 sessionstorage 比较简单易用,而对于需要存储大量或复杂数据的情况,可以使用 indexeddb

以上就是前端本地数据存储的几种常见方式总结的详细内容,更多关于前端本地数据存储的资料请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

uni-app集成使用SQLite数据库的方法步骤

02-14

使用JavaScript将PDF页面中的标注扁平化的操作指南

02-14

JavaScript闭包的深度剖析与实际应用小结

02-14

javascript axios 实现进度监控的示例代码

02-14

JS中循环遍历数组的几种常用方式总结

02-14

ESLint的简单使用方法(js,ts,vue)

02-14

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论