2026.3.31 星期二

1.本地文件存储(文件或者 localStorage)

  • 特点:简单易用,数据以文件形式存储在本地。

  • 优点:易于实现和维护。

  • 缺点:对于大量数据或需要复杂查询的应用,性能可能受限。通常有较小的存储容量限制(LocalStorage 通常是 5MB),对于大规模数据存储可能不够。


2.electron-store

链接:https://github.com/sindresorhus/electron-store

  • 特点:Electron 官方推荐的轻量级持久性数据存储解决方案,本质也是一个 json 文件,和本地文件类似。

  • 优点:支持主进程和渲染进程共享数据,良好的 API 和文档。

  • 缺点:适用于小规模数据,对于大规模数据可能性能不足。


3.SQLite

链接:https://www.sqlite.org/

  • 特点:轻量级关系型数据库,是世界上使用最多的轻量级数据库,提供 SQL 查询语言支持。

  • 优点:适用于需要复杂查询和事务的应用,性能较好。

  • 缺点:相比 IndexedDB,集成到 Electron 中可能需要更多工作。


4.IndexedDB

链接:https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API

  • 特点:基于浏览器的客户端存储技术,支持异步操作。
  • 优点:适用于存储大量结构化数据,支持索引、事务等功能,性能较好。
  • 缺点:复杂度较高,需要处理异步编程。

方案 核心特点 优点 缺点 适用场景
本地文件存储(文件 /localStorage) 简单本地存储,数据以文件或键值对保存 易实现、易维护 容量有限(localStorage 约 5MB),大量数据 / 复杂查询性能差 小体量、无复杂查询的轻量应用
electron-store Electron 推荐的 JSON 文件存储,本质是本地文件 主 / 渲染进程共享数据,API 友好,文档完善 仅适合小规模数据,大数据量性能不足 Electron 桌面应用的轻量配置 / 状态存储
SQLite 轻量级关系型数据库,支持 SQL 查询 支持复杂查询、事务,性能较好 集成到 Electron 需额外工作 有复杂查询、事务需求的中大型应用
IndexedDB(原生) 浏览器标准客户端存储,支持异步操作 适合大量结构化数据,支持索引 / 事务,性能较好 API 复杂,需处理异步编程 Electron 中需大量结构化数据、异步操作的场景
IndexedDB + Dexie.js 用 Dexie.js 封装 IndexedDB,简化使用 简化 API、更好异步支持、简化数据模型、性能优化 仍需学习封装库 需 IndexedDB 能力但想降低开发复杂度的场景

当前这个electron项目的数据

  1. 多个相关数据结构

  2. 数据结构之间的关联

  3. 大规模数据

  4. 异步操作需求

所以选择 IndexedDB 

  • 性能:适合存储大量结构化数据,具有良好的性能表现。

  • 标准化:作为浏览器标准,与 Electron 集成较为简单。

  • 功能:支持索引、事务等功能,可满足复杂需求。

  • 异步操作:适合 Electron 中的异步编程模型。


但是原生IndexedDB因为是浏览器自带的底层数据库 API。有很多缺点:

API极其繁琐,代码量大。不支持promise。查询语法复杂。版本管理麻烦等等。

所以使用 Dexie.js 封装 IndexedDB

https://dexie.org/docs/Tutorial/Vue

  1. 简化 IndexedDB 的 API

  2. 提供更好的异步支持

  3. 简化数据模型

  4. 性能优化

Dexie.js

1.插入数据

在渲染进程App.vue中写

npm start可得

可见已经将数据插入成功了。

其中值中就是provider测试数据

2.查询数据

可在控制台查看

也可以根据id值来查找具体某一项(通过where方法)

const providers = await db.providers.where({ id: 1 }).toArray();

console.log('providers', providers);

3.更新数据

4.删除数据

undefined说明删除成功。也可自行查看数据库发现确实删除成功。

其它详细用法请查文档

链接:https://dexie.org/(11.2k Stars)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐