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

Where to store user settings in Electron (Atom Shell) Application?

本文关键字:存储 用户 设置 位置 应用程序 Atom Shell      更新时间:2023-09-26

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

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

获取与name相关的特殊目录或文件的路径。

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

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

我在我的电子应用程序中遇到过这个特殊的问题,这篇文章激发了我写一个名为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"
    });
});

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

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

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

你选择哪一个将取决于你的应用程序的需要。如果你只需要在渲染过程中访问这些数据,那么我只使用localStorage。大多数时候,您似乎需要访问主程序和呈现程序中的数据,因此JSON文件是有意义的。如果您正在处理大量数据或复杂的查询,那么数据库可能是有意义的。

LocalStorage怎么样?如果你需要从浏览器进程中访问这些设置,你可能需要自己编写(或者只使用实现此功能的node.js库)

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

参见APPDIRECTORY HERE

可以将数据存储在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中工作