都是用于存储数据的工具,都存储在磁盘上,而非内存中
区别:
1. 存储机制与底层实现
特性 | localStorage | electron-store |
---|
技术基础 | 基于 Web API(HTML5),由 Chromium 提供支持 | 基于 Node.js 的文件系统(fs ),专为 Electron 设计 |
存储位置 | 保存在 Chromium 的用户数据目录(如 Local Storage/leveldb ) | 默认存储在系统应用数据目录(如 ~/.config/YourApp/config.json ) |
进程限制 | 仅限渲染进程(BrowserWindow 或 WebView) | 可在主进程和渲染进程中使用(需通过 IPC 通信) |
跨进程共享 | 不同渲染进程间隔离(除非同源) | 全局共享,主进程和所有渲染进程可访问同一存储 |
持久化存储路径:
1. electron-store
默认将数据存储在 应用的用户数据目录(userData) 下,具体路径因操作系统而异:
Windows:`%APPDATA%<AppName>\config.json`(如 `C:\Users<User>\AppData\Roaming<AppName>\config.json`)
macOS : `~/Library/Application Support/<AppName>/config.json`
Linux : `~/.config/<AppName>/config.json`(遵循 XDG 规范)
- 注:
<AppName>
是 electron.app.getName()
返回的应用名称
- (默认是
Electron
,建议在 package.json
或代码中设置应用名)。
- 是同步 API, 默认存储文件是明文 JSON
2. localStorage
的持久化位置
localStorage
是 Web API,存储在渲染进程的隔离环境中(每个窗口的 WebContents
独立存储)。数据默认保存在磁盘上,路径为:
Windows: %APPDATA%<AppName>\Local Storage\leveldb\
macOS: ~/Library/Application Support/<AppName>/Local Storage/leveldb/
Linux: ~/.config/<AppName>/Local Storage/leveldb/
2. 数据类型与容量
特性 | localStorage | electron-store |
---|
数据类型 | 仅支持字符串(需用 JSON.stringify 处理对象) | 直接支持 JavaScript 对象、数组等复杂类型 |
存储容量 | 通常限制为 5MB(同浏览器) | 无硬性限制,受磁盘空间约束 |
二进制数据 | 不支持 | 可间接存储(如 Base64 或 Buffer) |
3. 持久化与可靠性
特性 | localStorage | electron-store |
---|
数据持久性 | 持久化,但依赖 Chromium 的存储机制 | 直接写入磁盘文件,更可靠 |
崩溃恢复 | 可能因 Chromium 异常丢失数据 | 文件写入原子性更高,不易损坏 |
加密支持 | 无内置加密 | 可自定义加密(如 crypto 模块) |
4. 使用场景对比
场景 | localStorage | electron-store |
---|
简单键值存储 | ✅ 适合(如用户偏好设置) | ✅ 更适合(直接支持对象) |
敏感数据存储 | ❌ 不安全(明文存储) | ✅ 可扩展加密逻辑 |
多进程共享数据 | ❌ 需通过 IPC 转发 | ✅ 主进程统一管理 |
大规模数据 | ❌ 容量有限 | ✅ 无硬性限制 |
5. 与其他存储方案的对比
存储方式 | 特点 | 适用场景 |
---|
electron-store | 简单、同步、基于 JSON | 配置、小规模数据 |
localStorage | 渲染进程专用、容量受限(~5MB) | 临时数据、页面状态 |
IndexedDB | 异步、大容量 | 复杂结构化数据 |
SQLite | 关系型数据库、需安装模块 | 大规模数据、高频读写 |