js怎么实现数据储存
本地存储(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');
// 清空所有数据
sessionStorage.clear();
Cookie
Cookie 是一种传统的客户端存储方式,可以设置过期时间,但存储容量较小(约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 是一个浏览器内置的数据库,适合存储大量结构化数据,支持事务和索引。
// 打开数据库
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: 'John' });
// 获取数据
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 unique, name)');
tx.executeSql('INSERT INTO myTable (id, name) VALUES (1, "John")');
tx.executeSql('SELECT * FROM myTable', [], (tx, results) => {
console.log(results.rows);
});
});
文件存储(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);





