新聞中心
IndexedDB 是一種W3C 工作草案,令 JavaScript 開發(fā)人員可以存儲(chǔ)、搜索并檢索用戶本地客戶端上的數(shù)據(jù),即便未啟用 Internet 連接的情況下也可以。本博文介紹 IDBExplorer,我們?cè)趦?nèi)部利用該工具調(diào)試 IndexedDB 應(yīng)用程序。利用 IDBExplorer,您可以查看數(shù)據(jù)庫(kù)架構(gòu)、對(duì)象存儲(chǔ)內(nèi)容和索引詳細(xì)信息。

目前成都創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、昌黎網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
通過一個(gè) IndexedDB 應(yīng)用程序示例了解該工具
為了更好地演示說明,我使用 IndexedDB 創(chuàng)建了一個(gè)應(yīng)用程序,用于跟蹤我的新年計(jì)劃。它在本地存儲(chǔ)并訪問我的計(jì)劃(在系統(tǒng)上瀏覽網(wǎng)頁(yè)),并允許我添加或編輯計(jì)劃。[Done That](完成)按鈕會(huì)將選定的計(jì)劃從列表中移除,并從數(shù)據(jù)庫(kù)中移除其內(nèi)部表現(xiàn)形式。
IndexedDB 將某個(gè)數(shù)據(jù)庫(kù)定義為信息的容器。每個(gè)數(shù)據(jù)庫(kù)均包含對(duì)象存儲(chǔ),用作 JavaScript 對(duì)象的存儲(chǔ)庫(kù)。每個(gè)對(duì)象均包含可以利用 API 進(jìn)行查詢的特性。如果您對(duì)關(guān)系數(shù)據(jù)庫(kù)熟悉,對(duì)象存儲(chǔ)可以等同于表,對(duì)象存儲(chǔ)中的每個(gè) JavaScript 對(duì)象表示一個(gè)記錄。不過,IndexedDB 對(duì)象存儲(chǔ)中存儲(chǔ)的對(duì)象都被視為不透明實(shí)體。另外,這些對(duì)象都無需包含相同的屬性。
如果JavaScript 對(duì)象與關(guān)系數(shù)據(jù)庫(kù)記錄相似,則該對(duì)象的屬性可以被認(rèn)為是表中的列(或字段)。結(jié)果,IndexedDB 允許您定義標(biāo)識(shí)對(duì)象屬性的索引,用于在對(duì)象存儲(chǔ)中搜索記錄。因此,索引允許您使用 JavaScript 對(duì)象的特性值遍歷并搜索 IndexedDB 數(shù)據(jù)。
IndexedDB 允許每個(gè)域具有多個(gè)數(shù)據(jù)庫(kù)。此示例使用一個(gè)數(shù)據(jù)庫(kù):“NewYear”。該應(yīng)用程序在 NewYear 數(shù)據(jù)庫(kù)中名為“Resolutions”的對(duì)象存儲(chǔ)中存儲(chǔ)我的計(jì)劃。每個(gè)計(jì)劃都是具有以下特性的 JavaScript 對(duì)象:
◆ priorityId:將計(jì)劃分成不同的優(yōu)先級(jí)
◆ name:計(jì)劃的名稱
◆ occurrenceId:跟蹤計(jì)劃的活動(dòng)的執(zhí)行頻率
◆ dueDate:計(jì)劃的完成日期
◆ createdDate:計(jì)劃添加到對(duì)象存儲(chǔ)的內(nèi)部日期
◆ categoryId:定義計(jì)劃的活動(dòng)類型
請(qǐng)注意,并不是所有特性在應(yīng)用程序的 UI 中都是可見的。在某些情況下,他們僅供內(nèi)部使用(如 createdDate)。
下面是 IDBExplorer 工具顯示“Resolutions”對(duì)象存儲(chǔ)的內(nèi)容的方式:
“Resolutions”對(duì)象存儲(chǔ)還包含名為“priorityId”的 priorityId 特性的索引,利用該索引應(yīng)用程序可以使用priorityId 屬性查詢對(duì)象。每個(gè) priorityId 值的描述位于“Priorities”對(duì)象存儲(chǔ)內(nèi),occurrenceId 值的描述位于“Occurrences”對(duì)象存儲(chǔ)內(nèi)。類似地,categoryId 值的描述位于“Categories”對(duì)象存儲(chǔ)內(nèi)。
該工具使用一個(gè)樹層次結(jié)構(gòu)來說明上述關(guān)系:
IDBExplorer 工具顯示數(shù)據(jù)庫(kù)中有五個(gè)計(jì)劃(兩個(gè)高優(yōu)先級(jí)任務(wù),兩個(gè)中優(yōu)先級(jí)任務(wù)和一個(gè)低優(yōu)先級(jí)任務(wù))。
利用該應(yīng)用程序,我可以添加一個(gè)新計(jì)劃:
該應(yīng)用程序利用光標(biāo)從 Occurrence、Priority 和 Category 字段的各自對(duì)象存儲(chǔ)中檢索這些字段的值,并將這些值顯示給用戶。IDBExplorer 工具允許您查看這些值在對(duì)象存儲(chǔ)中存在的方式。例如,選擇 Categories 對(duì)象存儲(chǔ)會(huì)顯示可用的類別及其描述:
您可以在“WorkOn”屏幕中選擇某個(gè)計(jì)劃,并選擇 [Edit](編輯),對(duì)該計(jì)劃進(jìn)行更新。進(jìn)行任意更改后,選擇 [Update](更新)按鈕將提交這些更改,并在“Resolutions”對(duì)象存儲(chǔ)中更新這些值。
在您的應(yīng)用程序中使用 IDBExplorer
您可以在您的 Metro 風(fēng)格應(yīng)用程序或網(wǎng)站中包括 IDBExplorer 工具。不過,我們建議您不要在您的應(yīng)用程序中部署該工具。
要將該工具添加到您的網(wǎng)站,請(qǐng)將 IDBExplorer 軟件包的內(nèi)容復(fù)制并解壓到您的網(wǎng)站。您的應(yīng)用程序需要利用 iframe 元素或一個(gè)新窗口鏈接到 IDBExplorer 文件夾內(nèi)包含的 IDBExplorer.html 文件。
在我們的示例中,我們決定在 iframe 元素內(nèi)承載 IDBExplorer。.不過,對(duì)于常規(guī)開發(fā),我們建議在一個(gè)新窗口內(nèi)承載此 URI。當(dāng)您調(diào)試數(shù)據(jù)庫(kù)和應(yīng)用程序時(shí),不會(huì)影響您網(wǎng)站的用戶界面,實(shí)現(xiàn)了并行的用戶體驗(yàn)。
當(dāng)承載 IDBExplorer 時(shí),您需要使用查詢字符串傳遞數(shù)據(jù)庫(kù)名稱。在此示例中,是通過利用 iframe 元素的 src 特性來實(shí)現(xiàn)的:
當(dāng)計(jì)劃在 Metro 風(fēng)格應(yīng)用程序中承載此功能時(shí),請(qǐng)切記 Metro 風(fēng)格程序是全屏幕運(yùn)行的。因此,您應(yīng)該導(dǎo)航到此 URL,而不是打開一個(gè)新窗口(您將需要向 IDBExplorer.html 文件中添加一個(gè) [Back](返回)按鈕,以便能夠返回您的應(yīng)用程序)。另外,您可以添加一個(gè) iframe 元素并在該元素中顯示該工具。
原文:http://blogs.msdn.com/b/ie_cn/archive/2012/02/01/indexeddb.aspx
【編輯推薦】
- NoSQL生態(tài)系統(tǒng)
- 淺析Oracle NoSQL Database
- 為什么說很多NoSQL的Benchmark是扯淡?
- 解讀NoSQL數(shù)據(jù)庫(kù)的四大家族
- 為什么說很多NoSQL的Benchmark是扯淡?
網(wǎng)頁(yè)題目:調(diào)試IndexedDB應(yīng)用程序
標(biāo)題鏈接:http://www.5511xx.com/article/dhigjid.html


咨詢
建站咨詢
