数据库选择

在PicGo项目中,作者在nedblowdb 中进行了选择,最终选择了后者。但是在配置的时候还是踩了不少坑。[1]

经过搜索,本项目决定采用electron-store进行存储。[2][3][4]

安装

yarn add electron-store --dev

安装很顺利,都有点不习惯了

配置文件名称和路径

创建Store实例

1
2
3
const Store = require('electron-store');

const store = new Store();

name

Type: string
Default: config
存储文件的名称(不带扩展名)。

cwd

Type: string
Default: app.getPath('userData')

存储文件位置。 除非绝对必要,否则请勿指定! 默认情况下,它将通过遵循系统约定来选择最佳位置。 您很可能会误解并惹恼用户。

如果是相对路径,则相对于默认cwd。 例如在macOS 中,{cwd:'unicorn'}将在〜/Librar/Application\ Support/App\ Name/unicorn中生成一个存储文件。

app | Electron (electronjs.org)

1
app.getPath('userData')

储存你应用程序设置文件的文件夹,默认是 appData 文件夹附加应用的名称

image-20220303181806636

fileExtension

Type: string
Default: json

配置文件的扩展名。

更多参考ref[4]的翻译。

.get(key, [defaultValue])

获取一个项目或defaultValue(如果该项目不存在)。

.set(key, value)

设置一个项目。该值必须是JSON可序列化的。 尝试将类型设置为undefined,function或symbol会导致TypeError。

.set(object)

一次设置多个项目。

应用

往配置文件里读/写hexo根目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let hexoRoot
const Store = require('electron-store')
const store = new Store()
// 通过配置文件读写hexo根目录
function getRoot () { // TODO:错误处理,为空的情况,转换特殊字符等
hexoRoot = store.get('hexo_root')
}

function setRoot (root) {
store.set('hexo_root', root)
}

ipcMain.on('setConfig', (event, value) => {
console.log(value)
setRoot(value)
event.returnValue = 'setSuccess'
})

  1. Electron-vue开发实战2——引入基于Lodash的JSON数据库lowdb | MARKSZのBlog (molunerfinn.com) ↩︎

  2. sindresorhus/electron-store: Simple data persistence for your Electron app or module - Save and load user preferences, app state, cache, etc (github.com) ↩︎

  3. electron-store 以文件形式缓存配置 · PHP/Python/前端/Linux 等等 学习笔记 · 看云 (kancloud.cn) ↩︎

  4. Electron存储简单数据和用户首选项推荐用electron-store (xushanxiang.com) ↩︎