LocalStorage持久存储数据,关闭浏览器不丢失;SessionStorage仅在会话期间有效,关闭标签页即清除。两者均属Web Storage API,操作简单,用于存储字符串型数据,如用户偏好或表单临时状态。需注意:仅支持字符串存储,对象需用JSON.stringify转换;有5-10MB容量限制;遵循同源策略;不建议明文存敏感信息;可通过storage事件监听其他标签页的更改,但当前页修改不触发。合理选用可提升用户体验。
在Web开发中,LocalStorage 和 SessionStorage 是HTML5提供的两种客户端存储方案,允许我们在浏览器中保存数据。它们都属于Web Storage API,使用简单,适合存储字符串类型的数据,常用于保存用户偏好、登录状态或临时信息。
LocalStorage 用于长期保存数据,除非用户手动清除浏览器缓存或通过代码删除,否则数据会一直存在,即使关闭浏览器或重启设备也不会丢失。
常用操作:
localStorage.setItem('key', 'value');
localStorage.getItem('key');
localStorage.removeItem('key');
localStorage.clear();
例如,保存用户主题偏好:
localStorage.setItem('theme', 'dark');
const userTheme = localStorage.getItem('theme'); // 返回 'dark'
SessionStorage 仅在当前会话期间有效。一旦关闭浏览器标签页或窗口,数据就会被清除。它适用于保存临时数据,比如表单填写过程中的中间状态。
它的API与LocalStorage完全一致:
sessionStorage.setItem('tempData', 'draft');
sessionStorage.getItem('tempData');
sessionStorage.removeItem('tempData');
sessionStorage.clear();
比如,在多步骤表单中保存用户输入:
sessionStorage.setItem('step1Data', JSON.stringify({ name: 'Alice' }));
const data = JSON.parse(sessionStorage.getItem('step1Data'));
虽然这两个API使用方便,但有一些关键点需要注意:
JSON.stringify() 转换,读取时用 JSON.parse() 解析。storage事件监听变化)。当其他标签页修改了LocalStor
age时,可以通过监听storage事件做出响应:
window.addEventListener('storage', (e) => {
if (e.key === 'theme') {
console.log('主题已更改为:', e.newValue);
}
});
注意:当前页面对Storage的修改不会触发该事件,只响应其他同源页面的更改。
基本上就这些。LocalStorage和SessionStorage为前端提供了轻量、易用的数据存储方式,合理使用能显著提升用户体验。关键是根据数据生命周期选择合适的API,并注意数据类型和安全性问题。