当前位置:首页 > JavaScript

js实现数据存储

2026-04-04 14:15:14JavaScript

本地存储(LocalStorage)

LocalStorage 适合存储简单的键值对数据,容量较大(约5MB),数据不会随页面刷新或关闭而丢失。

// 存储数据
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');

IndexedDB

IndexedDB 是一个浏览器内置的数据库,适合存储大量结构化数据,支持事务和索引。

// 打开或创建数据库
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: 'Item 1' });

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

Cookies

Cookies 适合存储少量数据(约4KB),每次HTTP请求都会携带,常用于会话管理。

// 设置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;
}, {});

console.log(cookies.key);

Web SQL(已废弃)

Web SQL 是一个废弃的标准,但仍有一些浏览器支持,适合关系型数据存储。

// 创建数据库
const db = openDatabase('myDB', '1.0', 'My Database', 2 * 1024 * 1024);

db.transaction((tx) => {
  tx.executeSql('CREATE TABLE IF NOT EXISTS items (id unique, name)');
  tx.executeSql('INSERT INTO items (id, name) VALUES (?, ?)', [1, 'Item 1']);
  tx.executeSql('SELECT * FROM items', [], (tx, results) => {
    console.log(results.rows);
  });
});

文件存储(File API)

File API 允许读取和存储用户选择的文件,适合处理二进制数据。

// 读取文件
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);

缓存存储(Cache API)

Cache API 是 Service Worker 的一部分,适合存储网络请求和响应,用于离线应用。

js实现数据存储

// 打开缓存
caches.open('my-cache').then((cache) => {
  // 添加请求到缓存
  cache.add('/api/data').then(() => {
    // 从缓存读取
    cache.match('/api/data').then((response) => {
      response.text().then(console.log);
    });
  });
});

注意事项

每种存储方式都有其适用场景和限制,选择时需考虑数据大小、持久性、安全性和浏览器兼容性。

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

相关文章

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…

js 实现超链接

js 实现超链接

使用 HTML 的 <a> 标签 在 JavaScript 中动态创建超链接可以通过操作 DOM 实现。通过 document.createElement 创建一个 <a> 元…