PWA 应用中的 Web Storage API 实现本地数据存储

前言

在当前互联网时代,Web 应用的流行度越来越高,而 PWA(Progressive Web App,渐进式 Web 应用)更加的受到人们的追捧,PWA 具有跨平台、离线等优势,可以带给用户更好的体验。 本文将着重介绍 PWA 应用中的一种重要技术:Web Storage API,它的作用是实现本地数据存储。

Web Storage API

Web Storage API 引入了两个新对象:localStoragesessionStorage,用来提供浏览器本地存储数据的功能。它们的区别在于 localStorage 是持久化存储,而 sessionStorage 则是临时存储,浏览器关闭后数据将被清空。

通过 Web Storage API API 存储数据的格式为 key-value 的键值对,可以存储以下类型的数据:

  • 字符串(String)
  • 数字(Number)
  • 布尔(Boolean)
  • null
  • undefined

如果需要存储其他类型的数据,可以将其转化成字符串进行存储。

localStorage

localStorage 对象用于在浏览器中存储键值对,并在下次访问同一页面时将其取回。localStorage 的 API 包括以下方法:

  • setItem(key, value):将指定的值通过指定的键存储到 localStorage
  • getItem(key):通过指定的键获取存储在 localStorage 中的对应值
  • removeItem(key):通过指定的键删除在 localStorage 中存储的对应键值对
  • clear():清除 localStorage 中存储的所有键值对
  • key(index):获取存储在 localStorage 中的第 index 个键名

下面是一个使用 localStorage 存储数据的示例代码:

localStorage.setItem('name', 'pwa');
let name = localStorage.getItem('name');
console.log(name); // pwa

localStorage.removeItem('name');
localStorage.clear();

sessionStorage

sessionStoragelocalStorage 很类似,不同的是 sessionStorage 存储的数据在浏览器关闭后会被自动清除,即它是一个临时的数据存储区域。sessionStorage 的 API 和 localStorage 一样,只不过操作的是当前会话的存储对象。

下面是一个使用 sessionStorage 存储数据的示例代码:

sessionStorage.setItem('time', new Date());
let time = sessionStorage.getItem('time');
console.log(time); // Fri Jun 25 2021 08:48:29 GMT+0800 (中国标准时间)

sessionStorage.removeItem('time');
sessionStorage.clear();

在 PWA 中实现数据存储

作为一个 PWA 应用,需要在用户离线的情况下也能够正常访问应用。而 Web Storage API 正好可以实现这一点,它可以帮助我们将数据存储在用户本地,即使用户在离线的情况下也可以正常访问使用应用。

常见的数据存储方案包括使用 IndexedDB 、 Web SQL 等技术,而 Web Storage API 则是一种较为简单的实现本地数据存储的方案之一。

下面是一个使用 localStorage 存储数据的示例代码:

const cacheName = 'pwa-data';

const data = {
  name: 'pwa',
  time: new Date()
};

// 将数据存储到 localStorage 中
localStorage.setItem(cacheName, JSON.stringify(data));

// 从 localStorage 中取出存储的数据
let cacheData = localStorage.getItem(cacheName);
if (cacheData) {
  cacheData = JSON.parse(cacheData);
  console.log(cacheData.name); // pwa
  console.log(new Date(cacheData.time)); // Fri Jun 25 2021 08:48:29 GMT+0800 (中国标准时间)
}

// 从 localStorage 中删除存储的数据
localStorage.removeItem(cacheName);

总结

Web Storage API 提供了在浏览器中实现本地数据存储的方法,它有着简单易用、兼容性好、存储容量大等优点,可以在 PWA 中用于实现本地数据缓存功能。

参考文献

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65ba0830add4f0e0ff294268