在 Electron (Atom Shell) 应用程序中将用户设置存储在哪里?
Where to store user settings in Electron (Atom Shell) Application?
我似乎找不到用于存储用户设置的内置机制。我希望 Electron 提供一种标准方法来存储所有桌面平台的用户设置。如果没有这方面的先例,我可以自己实施,我只是不想立即跳转到自定义解决方案。这方面的在线研究非常少。谢谢!
LocalStorage 怎么样?如果您需要从浏览器进程访问这些设置,您可能需要自己编写(或者只使用实现此功能的 node.js 库)
每个平台对不同类型的数据都有不同的默认位置。因此,如果您想将数据存储在基于平台的默认位置,请查看 app.getPath(name)
它检索与 name
关联的特殊目录或文件的路径。
您还可以使用它来区分用户想要保存的数据和您的应用程序保存的您不想弄乱用户目录的数据。
或者,如果您只想存储与特定路径相关的文件,您可以使用
app.setPath(name,path)
我发现的最佳方法是将其存储在一个简单的文件中,如 JSON。问题是,如果您将 JSON 存储在应用程序目录中,那么当您更新应用程序时,它将被清除。所以你想把它放在当前操作系统的用户设置的默认目录中。幸运的是!!!!有一个用于节点开发人员的库,可以帮助您找到用户数据目录。这个模块叫appdirectory
,我用过好几次了。它非常易于使用。
我的 Electron 应用程序遇到了这个特殊问题,这个 post 启发我编写了一个名为 electron-json-storage.
的 NPM 模块
此模块允许轻松 write/read JSON to/from 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"
});
});
Electron 不会为此提供任何开箱即用的功能。但是,Electron 确实为您提供了一种通过 app.getPath API.
以跨平台方式获取存储用户数据的惯用位置的方法。
我想说最常见的 3 种方法是:
- localStorage(或任何 HTML5 存储 API)
- 平面JSON文件(我就是这样做的,我用electron-store)
- 嵌入式数据库,如 IndexedDB、neDB 或 sqlite
您选择哪一个取决于您应用的需求。如果您只需要在渲染器进程中访问这些数据,那么我会使用 localStorage
。大多数时候,您似乎需要同时访问主渲染器和渲染器中的数据,因此 JSON 文件是有意义的。如果您正在处理大量数据或复杂的查询,那么数据库可能是有意义的。我写了更多 in detail here。
可以将数据存储在 cookie 中; Electron 有它的机制 (https://electronjs.org/docs/api/cookies) and the cookies can be retrieved in the browser (Angular: https://docs.angularjs.org/api/ngCookies/service/$cookies, React/Other: https://github.com/reactivestack/cookies)
我能够让它与 Angularjs 一起工作。
我似乎找不到用于存储用户设置的内置机制。我希望 Electron 提供一种标准方法来存储所有桌面平台的用户设置。如果没有这方面的先例,我可以自己实施,我只是不想立即跳转到自定义解决方案。这方面的在线研究非常少。谢谢!
LocalStorage 怎么样?如果您需要从浏览器进程访问这些设置,您可能需要自己编写(或者只使用实现此功能的 node.js 库)
每个平台对不同类型的数据都有不同的默认位置。因此,如果您想将数据存储在基于平台的默认位置,请查看 app.getPath(name)
它检索与 name
关联的特殊目录或文件的路径。
您还可以使用它来区分用户想要保存的数据和您的应用程序保存的您不想弄乱用户目录的数据。
或者,如果您只想存储与特定路径相关的文件,您可以使用
app.setPath(name,path)
我发现的最佳方法是将其存储在一个简单的文件中,如 JSON。问题是,如果您将 JSON 存储在应用程序目录中,那么当您更新应用程序时,它将被清除。所以你想把它放在当前操作系统的用户设置的默认目录中。幸运的是!!!!有一个用于节点开发人员的库,可以帮助您找到用户数据目录。这个模块叫appdirectory
,我用过好几次了。它非常易于使用。
我的 Electron 应用程序遇到了这个特殊问题,这个 post 启发我编写了一个名为 electron-json-storage.
的 NPM 模块此模块允许轻松 write/read JSON to/from 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"
});
});
Electron 不会为此提供任何开箱即用的功能。但是,Electron 确实为您提供了一种通过 app.getPath API.
以跨平台方式获取存储用户数据的惯用位置的方法。我想说最常见的 3 种方法是:
- localStorage(或任何 HTML5 存储 API)
- 平面JSON文件(我就是这样做的,我用electron-store)
- 嵌入式数据库,如 IndexedDB、neDB 或 sqlite
您选择哪一个取决于您应用的需求。如果您只需要在渲染器进程中访问这些数据,那么我会使用 localStorage
。大多数时候,您似乎需要同时访问主渲染器和渲染器中的数据,因此 JSON 文件是有意义的。如果您正在处理大量数据或复杂的查询,那么数据库可能是有意义的。我写了更多 in detail here。
可以将数据存储在 cookie 中; Electron 有它的机制 (https://electronjs.org/docs/api/cookies) and the cookies can be retrieved in the browser (Angular: https://docs.angularjs.org/api/ngCookies/service/$cookies, React/Other: https://github.com/reactivestack/cookies)
我能够让它与 Angularjs 一起工作。