在Electron(Atom Shell)应用程序中存储用户设置的位置?

时间:2015-05-26 17:22:23

标签: electron

我似乎无法找到存储用户设置的内置机制。我希望电子提供了一种在所有桌面平台上存储用户设置的标准方法。如果没有先例,我可以自己实现,我只是不想立即跳转到自定义解决方案。该领域的在线研究相当稀少。谢谢!

6 个答案:

答案 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种方法是:

  • localStorage(或任何HTML5存储API)
  • 平面JSON文件(这是我的工作,我使用electron-config
  • 嵌入式数据库,如IndexedDB,neDB或sqlite

您选择哪一个取决于您应用的需求。如果您只需要在渲染器过程中访问此数据,那么我只使用: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,我已多次使用它。它非常易于使用。

请参阅APPDIRECTORY HERE

答案 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。