在前端开发中,存储数据是一个非常普遍的需求。而在 JavaScript 中,我们可以使用 localStorage、sessionStorage 等浏览器自带的存储方式来实现。但是它们的存储容量有限,而且数据只在同一个域名下有效。所以,我们可能需要一种更加灵活的存储方式。而这时可以使用 bstorage,一个依赖于浏览器 IndexedDB 的 npm 包。
bstorage 的安装和基本使用
安装 bstorage 很简单,只需要在命令行中运行如下命令:
npm install bstorage
bstorage 的基本使用也很简单,首先需要导入包:
import Bstorage from 'bstorage';
然后就可以创建一个 Bstorage 对象,并存储数据:
const store = new Bstorage(); store.set('key', 'value');
需要注意的是,Bstorage 存储的数据是异步保存的,因此我们应该使用 await 或者 Promise 风格的写法来确保数据已经成功保存到 IndexedDB 中:
await store.set('key', 'value'); // 或者 store.set('key', 'value').then(() => console.log('saved'));
同样地,我们也可以使用 get 方法来获取数据:
const value = await store.get('key');
如果想要删除某个键值对,可以使用 remove 方法:
store.remove('key');
bstorage 也支持批量操作,例如一次添加多个键值对:
store.batchSet({ key1: 'value1', key2: 'value2' });
批量获取:
const values = await store.batchGet('key1', 'key2');
批量删除:
store.batchRemove('key1', 'key2');
bstorage 的进阶使用
除了基本的增删改查操作,bstorage 还提供了很多有用的功能。
配置存储库名和版本号
bstorage 默认使用名为 bstorage 的数据库存储数据。如果我们想使用一个不同的库名,可以在创建 Bstorage 对象时传入一个 options 对象:
const store = new Bstorage({ dbName: 'mydb' });
同样地,我们也可以指定库的版本号:
const store = new Bstorage({ dbName: 'mydb', version: 2 });
对于库的版本号,当我们需要新增存储字段或者修改存储结构时,应该执行数据库迁移。例如,我们可以在属性 onUpgradeNeeded 中执行数据库迁移:
const store = new Bstorage({ dbName: 'mydb', version: 2, onUpgradeNeeded: (database) => { database.createObjectStore('mystore', { keyPath: 'id' }); }, });
这里,我们新增了一个名为 mystore 的 object store,并且指定了其主键为 id。
设置过期时间
bstorage 还提供了设置过期时间的功能。我们可以在 set 方法中传入一个 options 对象,其中的字段 exp 表示过期时间(单位:秒):
store.set('key', 'value', { exp: 60 }); // 1 分钟后过期
过期后,我们使用 get 方法获取数据会返回 null。
自动序列化和反序列化
bstorage 还提供了自动序列化和反序列化的功能。如果我们存储一个对象,bstorage 会自动将其序列化为字符串,而在获取数据时,bstorage 会自动将其反序列化为对象。
例如,这里我们存储了一个包含 name 和 age 两个属性的对象:
store.set('person', { name: 'John', age: 20 });
当我们使用 get 方法获取数据时,bstorage 会自动将返回的字符串反序列化为对象:
const person = await store.get('person'); console.log(person); // { name: 'John', age: 20 }
内置加密和解密
bstorage 还提供了内置加密和解密的功能。我们可以通过传入一个加密解密密钥,来使存储的数据更加安全。
创建 Bstorage 对象时,我们可以传入一个密钥 options.secretKey:
const store = new Bstorage({ secretKey: 'mysecretkey' });
设置密钥之后,存储的数据使用 AES 加密算法加密,并且在读取时自动解密。
bstorage 的指导意义
bstorage 的出现,使得前端存储数据更加灵活和方便。它提供了很多有用的功能,例如可以指定库名和版本号、设置过期时间、自动序列化和反序列化以及内置加密和解密等。这些功能可以帮助我们更好地管理数据,提升前端开发体验。
示例代码
-- -------------------- ---- ------- ------ -------- ---- ----------- ------ -- -- - ----- ----- - --- ---------- ---------- ------------- --- -- ------- ----- ---------------- -------- - ---- -- --- -- ---- ----- ----- - ----- ----------------- -- ---- -------------------- -- ---- ---------------- ----- --------- ----- -------- --- ----- ------ - ----- ---------------------- -------- ------------------------- -------- -- ---------- ------------------- - ----- ------- ---- -- --- ----- ------ - ----- -------------------- -------------------- -- -------- ----- ------ - --- ---------- ------- ------- -------- -- ---------------- ---------- -- - ------------------------------------- - -------- ---- --- -- --- -----
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedaa22b5cbfe1ea061036a