[Electron] electron-store 和localStorage的区别

14 阅读2分钟

都是用于存储数据的工具,都存储在磁盘上,而非内存中

区别:

1. 存储机制与底层实现

特性localStorageelectron-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. 数据类型与容量

特性localStorageelectron-store
数据类型仅支持字符串(需用 JSON.stringify 处理对象)直接支持 JavaScript 对象、数组等复杂类型
存储容量通常限制为 5MB(同浏览器)无硬性限制,受磁盘空间约束
二进制数据不支持可间接存储(如 Base64 或 Buffer)

3. 持久化与可靠性

特性localStorageelectron-store
数据持久性持久化,但依赖 Chromium 的存储机制直接写入磁盘文件,更可靠
崩溃恢复可能因 Chromium 异常丢失数据文件写入原子性更高,不易损坏
加密支持无内置加密可自定义加密(如 crypto 模块)

4. 使用场景对比

场景localStorageelectron-store
简单键值存储✅ 适合(如用户偏好设置)✅ 更适合(直接支持对象)
敏感数据存储❌ 不安全(明文存储)✅ 可扩展加密逻辑
多进程共享数据❌ 需通过 IPC 转发✅ 主进程统一管理
大规模数据❌ 容量有限✅ 无硬性限制

5. 与其他存储方案的对比

存储方式特点适用场景
electron-store简单、同步、基于 JSON配置、小规模数据
localStorage渲染进程专用、容量受限(~5MB)临时数据、页面状态
IndexedDB异步、大容量复杂结构化数据
SQLite关系型数据库、需安装模块大规模数据、高频读写