npm 包 indexeddb-js 使用教程

阅读时长 5 分钟读完

介绍

indexeddb-js 是一个开源的 JavaScript 库,可以将 IndexedDB (浏览器本地数据库) 在不支持的浏览器上模拟出来,以达到兼容性的目的。

安装

这里我们建议使用 npm 来安装 indexeddb-js,命令如下:

使用

indexeddb-js 是一个使用简单的库,以下是一个例子:

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

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

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

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

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

深度分析

indexeddb-js 通过 JavaScript 模拟 IndexedDB API,使不支持 IndexedDB 的浏览器也能使用该 API。其核心代码就是将数据存储在浏览器的本地存储中,例如 LocalStorage 或者 SQLite 等。

下面我们通过阅读 indexeddb-js 源码来了解内部实现。

  1. indexeddb-js 引用了 indexedb 来进行本地存储的操作。
  1. 初始化 indexeddb-js

其中,targetStorage 参数为一个抽象的数据存储引擎,目前该库支持的存储引擎有 IndexedDB、WebSQL、LocalStorage 和 MemoryStorage;options 参数包括:

  • version: 数据库版本(每次版本变化都会触发 onupgradeneeded 事件用于给存储库添加新的对象存储器或更新已有的存储器);
  • createObjectStore: 是否创建新的对象存储器;
  • noblob: 当使用 WebSQL 时,是否禁用 Blob 插件(否则会出现 A potentially dangerous Request.Form value was detected from the client. );
  1. indexeddb-js 的实现主要涉及增、查、删三个基本操作。下面将分别介绍每个操作的实现。

增加(插入)操作

indexeddb-js 支持对某个对象存储器中的数据进行插入操作。

其中,transaction.objectStore('customer') 方法用于获取一个对象存储器,该操作类似于获取一个 MySQL 数据库中的表。put 方法用于将数据插入到该对象存储器中。

查询操作

indexeddb-js 支持对某个对象存储器中的数据进行查询操作。

其中,get 方法用于获取该对象存储器中 key 值为 1 的对象;如果对象不存在,则返回 undefined

删除操作

indexeddb 操作是基于事务的,所以删除操作的实现与插入操作类似。

其中,delete 方法用于删除该对象存储器中 key 值为 1 的对象。

总结

以上是关于 indexeddb-js 的详细使用教程和源码分析,希望对大家有所帮助。IndexedDB 是浏览器本地存储方案的一种,一般用于存储一些离线数据或者缓存数据。通过使用 indexeddb-js 库,可以很好的解决 IndexedDB 在不支持的浏览器的兼容性问题。

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

纠错
反馈