在Electron(Atom Shell)应用程序中,在何处存储用户设置?

在Electron(Atom Shell)应用程序中,在何处存储用户设置?,electron,Electron,我似乎找不到存储用户设置的内置机制。我希望electron提供了一种标准的方法来存储所有桌面平台上的用户设置。如果没有先例,我可以自己实现它,我只是不想立即跳转到自定义解决方案。在线研究在这方面相当稀少。谢谢 本地存储呢?如果需要从浏览器进程访问这些设置,您可能需要编写自己的设置(或者只使用实现此设置的node.js库)每个平台都有不同类型数据的默认位置。所以,如果您想基于平台将数据存储在默认位置,请签出 它检索与name关联的特殊目录或文件的路径 您还可以使用它来区分用户想要保存的数据和应用程

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

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

每个平台都有不同类型数据的默认位置。所以,如果您想基于平台将数据存储在默认位置,请签出

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

您还可以使用它来区分用户想要保存的数据和应用程序保存的数据,您不想将用户目录弄得杂乱无章

或者,如果您只想存储与特定路径相关的文件,则可以使用

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


请看

我的Electron应用程序遇到了这个特殊的问题,这篇文章激励我编写了一个名为的NPM模块

此模块允许轻松地在
app.getPath('userData')
中写入/读取JSON:


电子不会给你任何现成的东西。然而,Electron确实为您提供了一种通过API以跨平台方式存储用户数据的惯用位置获取方法

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

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

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

人们可以将数据存储在cookies中;Electron对此有一个机制(),可以在浏览器中检索cookies(角度:$cookies,React/Other:)


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

我使用localStorage存储了我的设置,但我非常有兴趣了解更多有关如何与Electron一起工作的信息。因为清除本地存储很麻烦,而重新安装一个Electron应用程序似乎无法清除它。这正是我想要的,我只是不知道这个功能存在!谢谢
electron json存储
非常棒,另一个选择是
lowdb
只是好奇,但是electron json存储与仅仅
var someObj=json.parse(fs.readFileSync(path,{encoding:{utf8}))
fs.writeFileSync(path,json.stringify(someObj)})相比有什么优势即使使其异步,也不会添加超过几行。另请看。很棒的资源。尽管如此,该库似乎不支持您在本例中所做的承诺。您添加的每个依赖项都是一个更大的漏洞利用表面积,还有另一段代码需要不断更新,如果您是专业开发人员,您还需要审核代码。用整个臃肿的库来替换两行代码,或者仅仅
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"
    });

});