我似乎无法找到存储用户设置的内置机制。我希望电子提供了一种在所有桌面平台上存储用户设置的标准方法。如果没有先例,我可以自己实现,我只是不想立即跳转到自定义解决方案。该领域的在线研究相当稀少。谢谢!
答案 0 :(得分:60)
每个平台都有不同类型数据的不同默认位置。因此,如果您想根据平台将数据存储在默认位置,请查看app.getPath(name)
它检索与name
关联的特殊目录或文件的路径。
您还可以使用它来区分用户想要保存的数据,以及您不希望混淆用户目录的应用程序保存的数据。
或者如果您只想存储与特定路径相关的文件,您可以使用
app.setPath(name,path)
答案 1 :(得分:41)
我的Electron应用程序遇到了这个特殊问题,这篇文章激励我编写一个名为electron-json-storage的NPM模块。
此模块允许轻松地向/从app.getPath('userData')
写入/读取JSON:
const storage = require('electron-json-storage');
// Write
storage.set('foobar', { foo: 'bar' }).then(function() {
// Read
storage.get('foobar').then(function(object) {
console.log(object.foo);
// will print "bar"
});
});
答案 2 :(得分:10)
Electron并没有为您提供任何开箱即用的功能。但是,Electron确实为您提供了一种方法,可以通过app.getPath API以跨平台的方式获取存储用户数据的惯用位置。
我认为最常见的3种方法是:
您选择哪一个取决于您应用的需求。如果您只需要在渲染器过程中访问此数据,那么我只使用:highlight currawong ctermbg=darkred guibg=darkred
:match currawong /\v.*(%'a|%'b|%'c|%'d).*/
:nmap <F5> :redraw!<CR>
。大多数情况下,您似乎需要访问main和renderer中的数据,因此JSON文件才有意义。如果您正在处理大量数据或复杂的查询,那么数据库可能是有意义的。我写了更多in detail here。
答案 3 :(得分:5)
LocalStorage怎么样?如果您需要从浏览器进程访问这些设置,您可能需要自己编写(或者只使用实现此功能的node.js库)
答案 4 :(得分:1)
我找到的最好的方法是将它存储在一个简单的文件中作为JSON。问题是,如果您将该JSON存储在app dir中,那么当您更新应用程序时,它将被清除。因此,您希望将其放在当前操作系统的用户设置的默认目录中。幸运的是!!!!!有一个节点开发人员库可以帮助您找到userdata目录。该模块名为appdirectory
,我已多次使用它。它非常易于使用。
答案 5 :(得分:0)
可以将数据存储在cookie中; Electron有一个机制(https://electronjs.org/docs/api/cookies),可以在浏览器中检索cookie(Angular:https://docs.angularjs.org/api/ngCookies/service/ $ cookies,React / Other:https://github.com/reactivestack/cookies)
我能够使用Angularjs。