使用LocalStorage和IndexedDB进行本地存储

时尚捕手 2021-12-01 ⋅ 19 阅读

在现代Web应用程序中,我们经常需要在客户端存储大量数据。本地存储是一种有利于减少数据传输量和提高应用响应速度的关键技术。本博客将介绍两种常用的本地存储技术:LocalStorage和IndexedDB,以及它们的使用方法。

1. LocalStorage

LocalStorage是Web API中的一部分,可以让我们在客户端浏览器上存储和获取数据。它使用键值对的方式存储数据,并且数据会一直保留在客户端,直到发生手动清除或过期。

1.1 存储数据

要存储数据到LocalStorage中,我们可以使用localStorage.setItem(key, value)方法。其中,key是数据的键名,value是数据的值。

localStorage.setItem("name", "John Doe");

1.2 读取数据

要从LocalStorage中读取数据,我们可以使用localStorage.getItem(key)方法,其中key是要读取的数据的键名。

var name = localStorage.getItem("name");
console.log(name);  // 输出"John Doe"

1.3 删除数据

要从LocalStorage中删除数据,我们可以使用localStorage.removeItem(key)方法,其中key是要删除的数据的键名。

localStorage.removeItem("name");

1.4 清空数据

要清空LocalStorage中的所有数据,我们可以使用localStorage.clear()方法。

localStorage.clear();

2. IndexedDB

IndexedDB是一种更强大的本地存储技术,它可以用于存储更大量的结构化数据。与LocalStorage不同,IndexedDB使用对象存储模型,类似于NoSQL数据库。

2.1 打开数据库

要打开或创建一个IndexedDB数据库,我们可以使用indexedDB.open(databaseName, version)方法。其中,databaseName是数据库的名称,version是数据库的版本号。

var request = window.indexedDB.open("myDatabase", 1);

2.2 创建对象存储空间

一旦数据库被打开或创建,我们需要创建存储数据的对象存储空间。这可以通过在数据库的onupgradeneeded事件中执行操作来完成。

request.onupgradeneeded = function(event) {
  var db = event.target.result;
  var objectStore = db.createObjectStore("customers", { keyPath: "id" });
  objectStore.createIndex("name", "name", { unique: false });
};

2.3 存储数据

要存储数据到IndexedDB中,我们需要打开一个事务,并在其中获取操作对象存储空间。然后,我们可以使用add()put()方法将数据添加到对象存储空间中。

request.onsuccess = function() {
  var db = request.result;
  var transaction = db.transaction(["customers"], "readwrite");
  var objectStore = transaction.objectStore("customers");
  
  var customer = { id: 1, name: "John Doe" };
  var request = objectStore.add(customer);

  request.onsuccess = function(event) {
    console.log("Data added successfully");
  };
};

2.4 读取数据

要从IndexedDB中读取数据,我们需要打开事务,并获取操作对象存储空间。然后,我们可以使用get()getAll()方法来读取数据。

request.onsuccess = function() {
  var db = request.result;
  var transaction = db.transaction(["customers"], "readonly");
  var objectStore = transaction.objectStore("customers");
  
  var getRequest = objectStore.get(1);

  getRequest.onsuccess = function(event) {
    var customer = event.target.result;
    console.log(customer.name);  // 输出"John Doe"
  };
};

2.5 删除数据

要从IndexedDB中删除数据,我们需要打开事务,并获取操作对象存储空间。然后,可以使用delete()方法来删除指定键名的数据。

request.onsuccess = function() {
  var db = request.result;
  var transaction = db.transaction(["customers"], "readwrite");
  var objectStore = transaction.objectStore("customers");
  
  var deleteRequest = objectStore.delete(1);

  deleteRequest.onsuccess = function(event) {
    console.log("Data deleted successfully");
  };
};

以上是LocalStorage和IndexedDB两种常用本地存储技术的简单介绍和使用方法。根据应用程序的需求和数据量大小,我们可以选择适合的本地存储技术来提高应用程序的性能和响应速度。


全部评论: 0

    我有话说: