86

我似乎找不到存储用户设置的内置机制。我希望 Electron 提供了一种跨所有桌​​面平台存储用户设置的标准方法。如果没有先例,我可以自己实现它,我只是不想立即跳到自定义解决方案。这方面的在线研究非常稀少。谢谢!

4

6 回答 6

79

每个平台对不同类型的数据都有不同的默认位置。因此,如果您想根据平台将数据存储在默认位置,请查看app.getPath(name)

它检索与关联的特殊目录或文件的路径name

您还可以使用它来区分用户想要保存的数据,以及您的应用程序保存的您不想弄乱用户目录的数据。

或者,如果您只想存储与特定路径相关的文件,您可以使用 app.setPath(name,path)

于 2015-06-03T03:06:55.643 回答
45

我的 Electron 应用程序遇到了这个特殊问题,这篇文章启发我编写了一个名为electron-json-storage的 NPM 模块。

该模块允许轻松地将 JSON 写入/读取到/从app.getPath('userData')

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"
    });

});
于 2016-01-26T00:44:12.930 回答
18

Electron 并没有为此提供任何开箱即用的东西。但是,Electron 确实为您提供了一种通过app.getPath API以跨平台方式获取存储用户数据的惯用位置的方法。

我想说最常见的 3 种方法是:

  • localStorage(或任何 HTML5 存储 API)
  • 平面 JSON 文件(这就是我所做的,我使用电子商店
  • 嵌入式数据库,如 IndexedDB、neDB 或 sqlite

您选择哪一个将取决于您的应用程序的需求。如果您只需要在渲染器进程中访问这些数据,那么我只需使用localStorage. 大多数情况下,您似乎需要同时访问主渲染器和渲染器中的数据,因此 JSON 文件是有意义的。如果您正在处理大量数据或复杂的查询,那么数据库可能是有意义的。我在这里更详细地写了这个。

于 2016-09-20T02:54:53.343 回答
5

本地存储怎么样?如果您需要从浏览器进程访问这些设置,您可能需要编写自己的(或仅使用实现此功能的 node.js 库)

于 2015-06-01T01:13:21.010 回答
1

我发现最好的方法是将它存储在一个简单的文件中作为 JSON。问题是,如果您将该 JSON 存储在应用程序目录中,那么当您更新应用程序时,它将被清除。因此,您希望将其放在当前操作系统的用户设置的默认目录中。幸运!!!!有一个供节点开发人员使用的库,可以帮助您找到 userdata 目录。该模块被称为appdirectory,我已经使用过几次了。它非常易于使用。

在此处查看应用程序目录

于 2016-01-11T02:19:08.223 回答
-1

可以将数据存储在 cookie 中;Electron 有一个机制(https://electronjs.org/docs/api/cookies)并且可以在浏览器中检索 cookie(Angular:https : //docs.angularjs.org/api/ngCookies/service/$饼干,反应/其他:https ://github.com/reactivestack/cookies )

我能够让它与 Angularjs 一起工作。

于 2018-03-30T21:14:32.527 回答