前言
IndexedDB 是一种浏览器支持的本地数据库,可供客户端使用。它为 Web 应用提供了数据存储的能力。但是,由于它只是一个 HTML5 规范,并不是所有浏览器都完全支持,这就需要开发者找到一些替代方案。最常见的一种替代方案是使用一个叫做 IndexedDBShim 的库。IndexedDBShim 是一种 JavaScript 库,它模拟了 IndexedDB API,使得它可以在任何支持 JavaScript 的客户端环境下工作。
本文将介绍一个针对 IndexedDBShim 的 npm 包:@cliqz/indexeddbshim,并提供详细的使用教程。该包可以在客户端中轻松地使用一个支持 IndexedDB 的本地数据库来存储数据。
安装
使用 npm 安装 @cliqz/indexeddbshim 时,需要先安装 indexeddbshim:
npm install indexeddbshim --save npm install @cliqz/indexeddbshim --save
这将下载 IndexedDBShim 将需要的一切都装载到浏览器中,以便您可以在客户端中使用 IndexedDB API 。
引入
引入 npm 包,您首先需要导入 IndexedDBShim 的依赖文件,然后再导入 @cliqz/indexeddbshim:
import 'indexeddbshim'; import idb from '@cliqz/indexeddbshim';
这两个导入语句都必须出现,因为 @cliqz/indexeddbshim 是建立在 IndexedDBShim 之上的。如果您想使用直接使用 IndexedDB API,则只需导入 indexeddbshim。
使用
@cliqz/indexeddbshim 与 IndexedDB API 的使用非常相似。您可以创建一个数据库并向其中添加项目,如下所示:
-- -------------------- ---- ------- --- --- -- -------------------------------- ----- ------- - ---------------------- --- --------------- - -- -- - --------------------- ------ -- ------- -- ----------------- - -- -- - --------------------- ------ --------------- -- - --------------- -- ----------------------- - ----- -- - -- ---------------------------- ----- ----------- - ----------------------------------------------------- - -------- ---- --- ----------------- --- -- ----- ------- --- --
接下来,我们可以使用以下代码向刚刚建立的存储区添加更多对象:
-- -------------------- ---- ------- ----- ----------- - ------------------------- ------------- ----- ----------- - --------------------------------- ----- ------- - ----------------- --- -- ----- ----- --- ----------------- - -- -- - ---------------- ----- -- --- ----------- -- --------------- - -- -- - ---------------- --- --- ----- -- --- ----------- --
最后,我们可以使用以下代码从存储区检索对象:
const transaction = db.transaction(['users'], 'readonly'); const objectStore = transaction.objectStore('users'); const request = objectStore.get(1); request.onsuccess = () => { console.log(request.result.name); // Alice };
深度
IndexedDBShim 具有多种高级功能,例如:
- 支持事务,包括读写和只读事务
- 支持对象索引,从而使在存储区内查找对象更容易
- 支持游标,以便按顺序遍历存储区中的对象
- 支持单个存储区内的对象计数和 IDBs 中的对象计数
- 支持 Blob
这些功能已经在 IndexedDBShim 中实现,因此 @cliqz/indexeddbshim 直接继承了这些功能。
学习意义
使用 @cliqz/indexeddbshim 可以让您的客户端应用程序轻松地使用 IndexedDB 数据库。该库具有非常详细的文档,并且它适用于任何支持 JavaScript 的客户端环境。由于 IndexedDB API 在浏览器中的实现可能会因浏览器而异,因此使用 IndexedDBShim 和 @cliqz/indexeddbshim 是保持应用程序在所有浏览器中工作的一个好选择。此外,它提供的功能使用相对简单,基本的 IndexedDB 操作等在此使用。
示例代码
-- -------------------- ---- ------- ------ ---------------- ------ --- ---- ----------------------- --- --- -- -------------------------------- ----- ------- - ---------------------- --- --------------- - -- -- - --------------------- ------ -- ------- -- ----------------- - -- -- - --------------------- ------ --------------- -- - --------------- -- ----------------------- - ----- -- - -- ---------------------------- ----- ----------- - ----------------------------------------------------- - -------- ---- --- ----------------- --- -- ----- ------- --- -- -- ---------------------------------------- ----- ----------- - ------------------------- ------------- ----- ----------- - --------------------------------- ----- ------- - ----------------- --- -- ----- ----- --- ----------------- - -- -- - ---------------- ----- -- --- ----------- -- --------------- - -- -- - ---------------- --- --- ----- -- --- ----------- -- -- ----------------------------------- ----- ----------- - ------------------------- ------------ ----- ----------- - --------------------------------- ----- ------- - ------------------- ----------------- - -- -- - --------------------------------- -- ----- --
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/155771