npm 包 bstorage 使用教程

阅读时长 6 分钟读完

在前端开发中,存储数据是一个非常普遍的需求。而在 JavaScript 中,我们可以使用 localStorage、sessionStorage 等浏览器自带的存储方式来实现。但是它们的存储容量有限,而且数据只在同一个域名下有效。所以,我们可能需要一种更加灵活的存储方式。而这时可以使用 bstorage,一个依赖于浏览器 IndexedDB 的 npm 包。

bstorage 的安装和基本使用

安装 bstorage 很简单,只需要在命令行中运行如下命令:

bstorage 的基本使用也很简单,首先需要导入包:

然后就可以创建一个 Bstorage 对象,并存储数据:

需要注意的是,Bstorage 存储的数据是异步保存的,因此我们应该使用 await 或者 Promise 风格的写法来确保数据已经成功保存到 IndexedDB 中:

同样地,我们也可以使用 get 方法来获取数据:

如果想要删除某个键值对,可以使用 remove 方法:

bstorage 也支持批量操作,例如一次添加多个键值对:

批量获取:

批量删除:

bstorage 的进阶使用

除了基本的增删改查操作,bstorage 还提供了很多有用的功能。

配置存储库名和版本号

bstorage 默认使用名为 bstorage 的数据库存储数据。如果我们想使用一个不同的库名,可以在创建 Bstorage 对象时传入一个 options 对象:

同样地,我们也可以指定库的版本号:

对于库的版本号,当我们需要新增存储字段或者修改存储结构时,应该执行数据库迁移。例如,我们可以在属性 onUpgradeNeeded 中执行数据库迁移:

这里,我们新增了一个名为 mystore 的 object store,并且指定了其主键为 id。

设置过期时间

bstorage 还提供了设置过期时间的功能。我们可以在 set 方法中传入一个 options 对象,其中的字段 exp 表示过期时间(单位:秒):

过期后,我们使用 get 方法获取数据会返回 null。

自动序列化和反序列化

bstorage 还提供了自动序列化和反序列化的功能。如果我们存储一个对象,bstorage 会自动将其序列化为字符串,而在获取数据时,bstorage 会自动将其反序列化为对象。

例如,这里我们存储了一个包含 name 和 age 两个属性的对象:

当我们使用 get 方法获取数据时,bstorage 会自动将返回的字符串反序列化为对象:

内置加密和解密

bstorage 还提供了内置加密和解密的功能。我们可以通过传入一个加密解密密钥,来使存储的数据更加安全。

创建 Bstorage 对象时,我们可以传入一个密钥 options.secretKey:

设置密钥之后,存储的数据使用 AES 加密算法加密,并且在读取时自动解密。

bstorage 的指导意义

bstorage 的出现,使得前端存储数据更加灵活和方便。它提供了很多有用的功能,例如可以指定库名和版本号、设置过期时间、自动序列化和反序列化以及内置加密和解密等。这些功能可以帮助我们更好地管理数据,提升前端开发体验。

示例代码

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

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

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

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

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

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

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

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

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

纠错
反馈