Web Storage和IndexedDB都是用于在客户端存储数据的Web API。
Web Storage提供了一种简单的键值对存储机制,可以在浏览器上存储和读取数据。它分为两种类型:sessionStorage和localStorage。sessionStorage用于存储会话级别的数据,当会话结束时数据将被清除。而localStorage用于存储持久化的数据,数据可以跨会话和浏览器重启进行访问。
IndexedDB则提供了更强大和灵活的数据库式存储机制。它是一个NoSQL数据库,在浏览器中可以存储结构化的数据,并支持复杂的查询和事务操作。IndexedDB适用于存储大量数据和需要进行复杂查询的场景,比如离线使用和缓存数据。
总结来说,Web Storage适用于简单的键值对存储需求,而IndexedDB适用于复杂的数据存储和查询需求。
下面是一个使用Web Storage和IndexedDB存储数据的简单示例:
使用Web Storage存储数据:
<!DOCTYPE html>
<html>
<head>
<title>Web Storage Demo</title>
</head>
<body>
<input type="text" id="dataInput" placeholder="输入数据">
<button onclick="saveData()">保存数据</button>
<button onclick="showData()">显示数据</button>
<script>
function saveData() {
var data = document.getElementById("dataInput").value;
localStorage.setItem("data", data);
console.log("数据已保存到localStorage");
}
function showData() {
var data = localStorage.getItem("data");
console.log("从localStorage读取到的数据:" + data);
}
</script>
</body>
</html>
使用IndexedDB存储数据:
<!DOCTYPE html>
<html>
<head>
<title>IndexedDB Demo</title>
</head>
<body>
<input type="text" id="dataInput" placeholder="输入数据">
<button onclick="saveData()">保存数据</button>
<button onclick="showData()">显示数据</button>
<script>
var request = window.indexedDB.open("myDatabase", 1);
var db;
request.onupgradeneeded = function(event) {
db = event.target.result;
var objectStore = db.createObjectStore("dataStore", { keyPath: "id" });
};
request.onsuccess = function(event) {
db = event.target.result;
};
function saveData() {
var data = document.getElementById("dataInput").value;
var transaction = db.transaction(["dataStore"], "readwrite");
var objectStore = transaction.objectStore("dataStore");
var request = objectStore.add({ id: 1, data: data });
request.onsuccess = function(event) {
console.log("数据已保存到IndexedDB");
};
}
function showData() {
var transaction = db.transaction(["dataStore"], "readonly");
var objectStore = transaction.objectStore("dataStore");
var request = objectStore.get(1);
request.onsuccess = function(event) {
var data = event.target.result.data;
console.log("从IndexedDB读取到的数据:" + data);
};
}
</script>
</body>
</html>
这些示例分别演示了如何使用Web Storage和IndexedDB存储数据,并通过控制台输出结果。请注意,在使用IndexedDB之前,需要先创建数据库和对象存储空间。