汽车广告设计图片,南昌搜索引擎优化,3d建模学费一般多少钱,一键优化免费下载深入理解 localStorage
localStorage 是浏览器提供的一种客户端存储机制#xff0c;用于在用户浏览器中存储键值对数据。与 cookie 相比#xff0c;它提供了更大的存储容量#xff08;通常为 5-10MB#xff09;#xff0c;并且不会随 HTTP 请求发送到服务器#xff0c;因…深入理解 localStorage
localStorage 是浏览器提供的一种客户端存储机制用于在用户浏览器中存储键值对数据。与 cookie 相比它提供了更大的存储容量通常为 5-10MB并且不会随 HTTP 请求发送到服务器因此更适合存储应用程序不需要与服务器共享的数据。
核心特性 持久性 数据不会过期除非手动删除关闭浏览器或标签页后数据仍然保留 域隔离 每个域名有独立的 localStorage不同域名之间无法互相访问 存储限制 大多数浏览器限制为 5-10MB以字符串长度计算超出限制会抛出 QuotaExceededError 数据类型 只能存储字符串对象和数组需要使用 JSON.stringify 和 JSON.parse 进行转换
基本操作
存储数据
localStorage.setItem(key, value);// 存储对象示例
const user { name: John, age: 30 };
localStorage.setItem(user, JSON.stringify(user));
获取数据
const value localStorage.getItem(key);// 获取对象示例
const user JSON.parse(localStorage.getItem(user));
console.log(user.name); // 输出: John
删除数据
// 删除单个项
localStorage.removeItem(key);// 清空所有项
localStorage.clear();
遍历所有项
for (let i 0; i localStorage.length; i) {const key localStorage.key(i);const value localStorage.getItem(key);console.log(${key}: ${value});
}
实际应用场景
1.记住用户偏好
// 保存主题选择
const saveTheme (theme) {localStorage.setItem(appTheme, theme);
};// 获取主题选择
const getTheme () {return localStorage.getItem(appTheme) || light;
};
2. 缓存 API 响应 const fetchData async (url) {const cached localStorage.getItem(url);if (cached) {return JSON.parse(cached);}const response await fetch(url);const data await response.json();localStorage.setItem(url, JSON.stringify(data));return data;
};
3.会话管理
// 登录时存储令牌
const login (token) {localStorage.setItem(authToken, token);
};// 检查是否已登录
const isLoggedIn () {return !!localStorage.getItem(authToken);
};
4.离线应用
// 保存表单数据防止意外丢失
const saveFormData (formData) {localStorage.setItem(formDraft, JSON.stringify(formData));
};// 恢复表单数据
const restoreFormData () {return JSON.parse(localStorage.getItem(formDraft));
};
注意事项与最佳实践 错误处理 存储数据时可能会超出容量限制某些浏览器隐私模式下 localStorage 可能不可用
const safeSetItem (key, value) {try {localStorage.setItem(key, value);} catch (e) {console.error(LocalStorage error:, e);// 可以实现降级策略如使用内存缓存}
}; 性能考虑 避免存储大量数据或频繁读写localStorage 操作是同步的可能阻塞主线程 数据安全 数据以明文形式存储容易被脚本读取不要存储敏感信息如密码、信用卡号