当前位置:首页 > JavaScript

js实现数据存储

2026-01-30 22:26:34JavaScript

本地存储(LocalStorage)

LocalStorage 是一种在浏览器中存储数据的机制,数据以键值对形式存储,且不会随页面刷新或关闭而丢失。适合存储简单的字符串数据。

// 存储数据
localStorage.setItem('key', 'value');

// 读取数据
const value = localStorage.getItem('key');

// 删除数据
localStorage.removeItem('key');

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

会话存储(SessionStorage)

SessionStorage 与 LocalStorage 类似,但数据仅在当前会话有效,关闭标签页或浏览器后数据会被清除。

// 存储数据
sessionStorage.setItem('key', 'value');

// 读取数据
const value = sessionStorage.getItem('key');

// 删除数据
sessionStorage.removeItem('key');

Cookie

Cookie 是一种传统的客户端存储方式,数据会随 HTTP 请求发送到服务器。适合存储小量数据,但需注意大小限制(通常为 4KB)。

// 设置 Cookie
document.cookie = 'key=value; expires=Fri, 31 Dec 2023 23:59:59 GMT; path=/';

// 读取 Cookie
const cookies = document.cookie.split(';').reduce((acc, cookie) => {
  const [key, value] = cookie.trim().split('=');
  acc[key] = value;
  return acc;
}, {});

// 删除 Cookie(通过设置过期时间为过去)
document.cookie = 'key=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';

IndexedDB

IndexedDB 是一种低级 API,适合存储大量结构化数据。支持事务和索引查询,适合复杂应用。

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

request.onupgradeneeded = (event) => {
  const db = event.target.result;
  const store = db.createObjectStore('myStore', { keyPath: 'id' });
};

request.onsuccess = (event) => {
  const db = event.target.result;
  const transaction = db.transaction('myStore', 'readwrite');
  const store = transaction.objectStore('myStore');

  // 添加数据
  store.add({ id: 1, name: 'Data' });

  // 读取数据
  const getRequest = store.get(1);
  getRequest.onsuccess = () => console.log(getRequest.result);
};

Web SQL(已废弃)

Web SQL 是一种基于 SQL 的存储方式,但已被废弃,不建议在新项目中使用。

// 示例代码(仅作参考)
const db = openDatabase('myDB', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction((tx) => {
  tx.executeSql('CREATE TABLE IF NOT EXISTS myTable (id, name)');
  tx.executeSql('INSERT INTO myTable VALUES (?, ?)', [1, 'Data']);
});

文件存储(File API)

File API 允许通过 JavaScript 访问用户本地文件,适合处理文件数据。

// 读取文件
const input = document.createElement('input');
input.type = 'file';
input.onchange = (e) => {
  const file = e.target.files[0];
  const reader = new FileReader();
  reader.onload = (event) => console.log(event.target.result);
  reader.readAsText(file);
};
document.body.appendChild(input);

第三方库(如 PouchDB)

PouchDB 是一个开源的 JavaScript 数据库,支持与 CouchDB 同步,适合离线应用。

js实现数据存储

// 安装 PouchDB 后使用
const db = new PouchDB('myDB');
db.put({ _id: '1', name: 'Data' }).then(() => {
  return db.get('1');
}).then(doc => console.log(doc));

标签: 数据存储js
分享给朋友:

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…