IndexedDB 是浏览器的大数据量本地储存方式,不过很难用,推荐一个封装好的工具库。
浏览器 IndexedDB
现在大型的
Web 应用
功能越来越完善,需要在客户端进行数据存储
、离线访问
以及数据同步等,对本地数据的储存和管理非常重要。LocalStorage
已经满足不了这些本地储存的需求了,很多开发者看向了IndexedDB
,这是一种可以本地存储大量数据的方法。不过我第一次使用时,直接使用 IndexedDB API ,非常麻烦,需要写很多代码,我第一感觉是非常怀念 LocalStorage 的简单直接。后来发现了
Dexie.js
,这是一个强大、简单的 JavaScript 库,它对 IndexedDB 进行了封装,让我可以很轻松地管理浏览器端的数据。
Dexie.js 技术特性
数据更容易管理
Dexie.js 提供简洁的
API
,让我们可以轻松创建、打开、查询和管理 IndexedDB 数据库。我们不仅可以定义数据模式,包括表格和索引,而且随着 web 项目的发展迭代,还可以方便地进行数据库版本
升级。Promise 异步支持
和 IndexedDB 原生 API 一样,Dexie.js 的操作也是异步的,而且是用 Promise
来处理异步操作,可以直接在数据库操作后执行使用 then
() 方法处理结果,或者使用 async/await
语法来更清晰地处理异步操作,编写和维护代码非常优雅。
数据查询
Dexie.js 支持复杂的查询操作,包括过滤、排序、范围查询等,完全不需要编写那些的低级 IndexedDB 代码,数据检索和处理非常优雅灵活。
浏览器兼容性好
Dexie.js 支持主流的现代浏览器,包括
Chrome
、Firefox、Edge
和 Safari 等,手机端上也得到了很多的支持,不用担心兼容性问题。轻量级
Dexie.js 是一个
轻量级
的库,体积小巧,加载速度快,没有其他依赖。开发上手使用
现在让我们来看一下如何使用 Dexie.js 来管理浏览器端的数据。比如创建一个 IndexedDB 数据库、定义一个表格以及插入和查询数据。
1. 安装 Dexie.js
我们可以从 CDN 引入 js 文件,也可以使用 npm 或 yarn 来进行安装。下面使用 npm:
npm install dexie
2. 创建数据库
// 导入Dexie库 import Dexie from 'dexie'; // 创建一个数据库实例 const db = new Dexie('testDatabase');
3. 定义数据表格
db.version(1).stores({ friends: '++id, name, age' });
在这段代码创建了一个名为 friends
的表格,包含自动生成的 id
字段、name
字段和 age
字段。其中 ++id
表示 id
字段自动递增。
4. 插入数据
db.friends.add({ name: '张三', age: 30 }); db.friends.add({ name: '李四', age: 25 });
5. 查询数据
db.friends .where('age') .above(28) .toArray() .then(friends => { console.log('超过28岁的朋友:', friends); });
上面这段代码使用 where
方法指定查询条件,然后使用 above
方法指定条件为大于28岁的朋友。最后,通过 toArray
方法获取结果,并将结果打印到控制台。
搭配 Vue 等框架使用
怎么样,使用起来很简单吧?由于没有其他依赖,Dexie.js 可以搭配其他框架一起使用,比如可以和 Vue.js 使用。

<template> <h2>朋友们</h2> <ul> <li v-for="friend in friends" :key="friend.id"> {{ friend.name }}, {{ friend.age }} </li> </ul> </template> <script> import { liveQuery } from "dexie"; import { db } from "../db"; import { useObservable } from "@vueuse/rxjs"; export default { name: "FriendList", setup() { return { friends: useObservable( liveQuery(async () => { return await db.friends .where("age") .between(18, 65) .toArray(); }) ) }; } }; </script>
看到这里,相信你也清楚了,Dexie.js 非常适合哪些
LocalStorage
已经满足不了的项目,如何你也遇到这种情况,是时候考虑它了。免费开源说明
Dexie.js 是一个免费开源的
这一切,似未曾拥有