Dexie.js:轻量级 IndexedDB 封装库

阅读时长 6 分钟读完

IndexedDB 是浏览器原生提供的一个客户端存储方案,其可以存储大量的结构化数据,支持事务和索引等高级特性。然而,IndexedDB API 的使用却相对复杂繁琐,需要开发者自己编写大量的异步代码来实现数据的增删改查等操作。为了简化 IndexedDB 的使用,Dexie.js 库应运而生。

Dexie.js 简介

Dexie.js 是一款轻量级的 IndexedDB 封装库,其提供了简单易用的 API,可以方便地进行 IndexedDB 数据库的创建、打开、升级、查询等操作,同时也提供了事务、索引、批量操作等高级特性。Dexie.js 的 API 设计灵活、易于扩展,可以满足各种场景下的需求。

Dexie.js 的使用

安装

Dexie.js 可以通过 npm 安装:

也可以直接下载源码,引入 dexie.js 文件。

创建数据库

使用 Dexie.js 创建 IndexedDB 数据库非常简单,只需要继承 Dexie 类,并在构造函数中定义数据库的名称和数据结构即可:

-- -------------------- ---- -------
------ ----- ---- --------

----- ---------- ------- ----- -
  ------------- -
    --------------------
    ------------------------
      ------ ----------------
      --------- --------------------
    ---
  -
-

----- -- - --- -------------

上述代码创建了一个名为 myDatabase 的 IndexedDB 数据库,包含两个对象存储空间 users 和 articles,分别存储用户和文章的数据。users 对象存储空间定义了三个属性:id、name、age,其中 id 为自增主键,name 和 age 分别为用户名和年龄。articles 对象存储空间定义了三个属性:id、title、content,其中 id 为自增主键,title 和 content 分别为文章标题和内容。

数据的增删改查

使用 Dexie.js 对数据进行增删改查也非常方便,其 API 设计符合 Promise 风格,可以直接使用 async/await 进行异步操作。

添加数据

使用 add() 方法向对象存储空间中添加数据:

更新数据

使用 put() 方法更新对象存储空间中的数据:

删除数据

使用 delete() 方法删除对象存储空间中的数据:

查询数据

使用 where() 方法查询对象存储空间中符合条件的数据:

上述代码查询了年龄大于 18 岁的所有用户和标题以 Dexie 开头的所有文章。

事务和索引

Dexie.js 支持事务和索引等高级特性,可以大大提高 IndexedDB 数据库的性能和灵活性。

事务

使用 transaction() 方法可以开启一个事务,将多个数据操作放在同一个事务中可以保证数据的一致性和可靠性:

上述代码开启了一个读写事务,对 users 和 articles 两个对象存储空间进行了数据操作。

索引

使用 index() 方法可以定义对象存储空间的索引,可以大大提高查询数据的速度:

-- -------------------- ---- -------
----- ---------- ------- ----- -
  ------------- -
    --------------------
    ------------------------
      ------ -----------------------
      --------- --------------------------
    ---
  -
-

----- ----- - ----- ------------------------------------------------------------
----- -------- - ----- ---------------------------------------------- ------------------

上述代码定义了 users 和 articles 两个对象存储空间的 email 和 tags 两个属性为索引,可以使用 where() 方法进行查询操作。

批量操作

使用 Dexie.js 还可以进行批量操作,将多个数据操作放在同一个批处理中可以大大提高数据的处理效率:

-- -------------------- ---- -------
----- ----- - -
  - ----- ------ ---- -- --
  - ----- ------- ---- -- --
  - ----- ------- ---- -- -
--

----- -------------------- --------- ----- -- -- -
  --- ------ ---- -- ------ -
    ----- -------------------
  -
---

上述代码使用事务和循环结构将多个用户数据添加到 IndexedDB 数据库中。

总结

Dexie.js 是一款轻量级的 IndexedDB 封装库,其提供了简单易用的 API,可以方便地进行 IndexedDB 数据库的创建、打开、升级、查询等操作,同时也提供了事务、索引、批量操作等高级特性。使用 Dexie.js 可以大大提高 IndexedDB 数据库的开发效率和性能,是前端开发中不可或缺的工具。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65c814dcadd4f0e0ff1f64ff

纠错
反馈