electron-store
介绍
以文件形式缓存数据,保存Electron应用程序或模块的简单数据持久性-保存和加载用户首选项,应用程序状态,缓存等
数据保存在app.getPath('userData')中的JSON文件中。您可以在主进程和渲染器进程中直接使用此模块。
app.getPath(name)-储存你应用程序设置文件的文件夹,默认是 appData 文件夹附加应用的名称。
appData-当前用户的应用数据文件夹,默认对应:
%APPDATA% Windows 中
$XDG_CONFIG_HOME or ~/.config Linux 中
~/Library/Application Support macOS 中安装
npm install electron-store
使用
const Store = require('electron-store'); let option={ name:"config",//文件名称,默认 config fileExtension:"json",//文件后缀,默认json cwd:app.getPath('userData'),//文件位置,尽量不要动,默认情况下,它将通过遵循系统约定来选择最佳位置。C:\Users\xxx\AppData\Roaming\test\config.json // encryptionKey:"aes-256-cbc" ,//对配置文件进行加密 clearInvalidConfig:true, // 发生 SyntaxError 则清空配置, } const store = new Store(option); // 一般直接简化为 const Store = require('electron-store'); const store = new Store();
设置、获取数据
.set(key, value)
.set(object)
.get(key, [defaultValue]) 获取一个数据或defaultValue(如果该数据不存在)。
.reset(…keys) 将项目重置为其默认值
.has(key)
.delete(key).clear()
.size.path 获取存储文件的路径。
示例:
store.set('unicorn', '这是需要存储的内容'); console.log(store.get('unicorn')); //=> '这是需要存储的内容' // 使用点表示法访问嵌套属性 store.set('foo.bar', true); console.log(store.get('foo')); //=> {bar: true} // 嵌套存储 store.set({ foo: { bar: { foobar: 'hahaha' } } }); console.log(store.get('foo.bar.foobar')); store.delete('unicorn'); console.log(store.get('unicorn')); //=> undefined
为什么不使用window.localStorage
localStorage仅在浏览器进程(渲染进程)中起作用。
localStorage的容错性不是很高,因此,如果您的应用遇到错误并意外退出,则可能会丢失数据。
localStorage仅支持持久字符串。 此模块支持任何JSON支持的类型。
localStorage不是很安全,可能是由于xss攻击而泄漏信息。
electron-store模块的API更好。 您可以设置并获取嵌套属性。 您可以设置默认的初始配置。
各存储区别
vuex存储在内存
localstorage则以文件的方式存储在本地
electron-store数据存储卸载应用之后依然存在
应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值。
foo: { type: 'number', maximum: 100, minimum: 1, default: 50 }, bar: { type: 'string', format: 'url' }
永久性:当刷新页面时vuex存储的值会丢失,localstorage不会。
electron-store的注意点
1.存储简单信息,不要存储复杂大量信息,容易造成读取速度变慢。
2.每一次get都是一次i/o操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」