」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > IndexedDB解釋了。

IndexedDB解釋了。

發佈於2025-03-23
瀏覽:250

在上一篇文章中,我們討論了Dexie,Dexie是IndexedDB的包裝紙。在本文中,我們討論了索引。您必須熟悉此LocalStorage API,通常用於將信息存儲在瀏覽器中。同樣,indexedDB用於客戶端存儲。

什麼是indexeddb?

[2 IndexEdDB是用於客戶端存儲大量結構化數據(包括文件/blobs)的低級API。該API使用索引來啟用此數據的高性能搜索。雖然Web存儲對於存儲少量數據很有用,但對於存儲較大量的結構化數據而言,它不太有用。

[2
indexedDB提供了一個解決方案。這是MDN的索引EDEXEDDB覆蓋範圍的主要著陸頁 - 我們在這裡提供了完整的API參考和使用指南,瀏覽器支持詳細信息以及對關鍵概念的一些解釋。

示例存儲庫:

IndexedDB explained.

MDN提供了一個示例GitHub存儲庫,並具有腳本/todo.js。

腳本是使用window.onload初始化的

打開數據庫請求:

//讓我們打開數據庫 const dbopenrequest = window.indexeddb.open('todolist',4);

window.onload = () => {
}

//註冊兩個事件處理程序,以成功打開的數據庫 dbopenrequest.onerror =(event)=> { Note.AppendChild(createListItem('錯誤加載數據庫。')); };

在成功的數據庫連接上:
window.onload = () => {
}

dbopenrequest.onsuccess =(event)=> { Note.AppendChild(createListItem('數據庫初始化。')); //存儲在DB變量中打開數據庫的結果。這在下面使用了很多 db = dbopenrequest.result; //運行DisplayData()函數以填充任務列表,並使用indexeddb中的所有待辦事項列表數據 displayData(); };

添加數據
window.onload = () => {
}

//打開讀/寫DB事務,準備添加數據 const交易= db.transaction(['todolist'],'readwrite'); //調用已經添加到數據庫的對象存儲 const ObjectStore = trassaction.ObjectStore('Todolist'); //請求將我們的newitem對象添加到對象存儲 const ObjectStoreRequest = ObjectStore.Add(newitem [0]); ObjectStoreReQuest.Onccess =(event)=> { //處理成功數據。 } //報告完成交易完成的成功 transaction.oncomplete =()=> { Note.AppendChild(createListItem(“完成交易完成:完成數據庫修改完成。”); //通過再次運行DisplayData(),更新數據顯示以顯示新添加的項目。 displayData(); }; //處理程序出現任何意外錯誤 transaction.onerror =()=> { note.appendchild(createListItem(`由於錯誤而未打開事務:$ {trassaction.error}`)); };

觀察:localstorage vs indexeddb
window.onload = () => {
}

您現在可能已經意識到,僅需添加記錄就需要很多代碼,您的同步回調(例如OnError和Onsuccess)。這是在此堆棧交換答案中指向的。 簡化處理此索引,可以使用dexie。

與dexie一起添加數據:
window.onload = () => {
}

導出函數addfriendform({defaultage} = {defaultage:21}){ const [name,setName] = usestate(''); const [age,setage] = usestate(默認值); const [狀態,setStatus] = usestate(''); 異步函數addfriend(){ 嘗試 { //添加新朋友! const ID =等待db.friends.add({ 姓名, 年齡 }); setStatus(`friend $ {name}成功添加。獲取id $ {id}`); setName(''); setage(默認值); } catch(錯誤){ setStatus(`未能添加$ {name}:$ {error}`); } } 返回 (

{狀態}

姓名: setName(ev.target.value)} /> 年齡: setage(number(ev.target.value))}} /> add > ); } 此包裝API使我想起了諸如Prisma和Prizzle之類的Orms。

關於我們:

在ThinkThroo,我們研究大型開源項目並提供建築指南。我們已經開發了可以在項目中使用的重新提交組件,該組件是用尾風構建的。我們提供Next.js,React和Node Development Services。

與我們預定會議討論您的項目。 [2 [2

參考:
window.onload = () => {
}

https://softwareengineering.stackexchange.com/questions/questions/219953/how-is-is-localstorage-different-from-indexeddb

版本聲明 本文轉載於:https://dev.to/thinkthroo/indexeddb-explained-4gmg?1如有侵犯,請聯繫[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3