📜  在浏览器中存储数据 javascript (1)

📅  最后修改于: 2023-12-03 15:37:44.488000             🧑  作者: Mango

在浏览器中存储数据 Javascript

在Web开发中,我们常常需要在浏览器中存储一些数据,例如用户的登录状态、购物车中的商品等等。Javascript提供了多种方式可以存储数据,本文将介绍常用的四种方式:cookie、localStorage、sessionStorage、IndexedDB。

Cookie

Cookie是最老的浏览器存储数据的方式之一,它允许我们存储小字符串,并在请求时发送给服务器。可以通过设置Cookie的过期时间实现长期存储,也可以通过设置httponly属性来防止Cookie被JavaScript访问。以下是一个设置Cookie的例子:

document.cookie = "name=John Doe; expires=Thu, 18 Dec 2022 12:00:00 UTC; path=/";
localStorage

localStorage是HTML5中新引进的浏览器存储数据的方式,它可以在浏览器关闭后一直存在,直到被清除。localStorage可以存储5MB的数据,键值对的值必须是字符串类型,可以通过JSON.stringify()和JSON.parse()来将JSON格式的数据进行存储和读取。以下是一个localStorage的例子:

localStorage.setItem("name", "John Doe");
var name = localStorage.getItem("name");
localStorage.removeItem("name");
sessionStorage

sessionStorage与localStorage很相似,但数据只在浏览器会话期间存在。当用户关闭浏览器窗口后数据会被清除。然而,如果用户在浏览器会话期间打开多个窗口,那么每个窗口都可以访问相同的sessionStorage数据。以下是一个sessionStorage的例子:

sessionStorage.setItem("name", "John Doe");
var name = sessionStorage.getItem("name");
sessionStorage.removeItem("name");
IndexedDB

IndexedDB是一种高级的浏览器存储数据的方式,它可以存储大量的数据,并且支持离线访问。IndexedDB的数据存储使用键值对的方式,键不唯一。以下是一个IndexedDB的例子:

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

request.onerror = function(event) {
  console.log("Database error: " + event.target.errorCode);
};

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

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

  transaction.oncomplete = function(event) {
    db.close();
  };
};

以上是四种常用的浏览器存储数据的方式。在实践中,我们可以根据不同的数据类型和存储需求,选择最合适的存储方式。