我似乎找不到用于存储用户设置的内置机制。我希望电子能提供一种在所有台式机平台上存储用户设置的标准方法。如果没有先例可以自己实现,那么我就是不想立即跳转到自定义解决方案。在线研究在该领域非常稀疏。谢谢!
我似乎找不到用于存储用户设置的内置机制。我希望电子能提供一种在所有台式机平台上存储用户设置的标准方法。如果没有先例可以自己实现,那么我就是不想立即跳转到自定义解决方案。在线研究在该领域非常稀疏。谢谢!
Answers:
每个平台对于不同种类的数据都有不同的默认位置。因此,如果要基于平台将数据存储在默认位置,请签出app.getPath(name)
它检索与关联的特殊目录或文件的路径name
。
您还可以使用它来区分用户想要保存的数据和应用程序保存的不想使用户目录混乱的数据。
或者,如果您只想存储指向特定路径的文件,则可以使用
app.setPath(name,path)
我在我的Electron应用程序中遇到了这个特殊问题,这篇帖子激发了我编写一个名为electronic-json-storage的NPM模块的信息。
该模块允许轻松地向/从JSON写入/读取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"
});
});
electron-json-storage
很棒,另一个选择是lowdb
var someObj = JSON.parse(fs.readFileSync(path, {encoding: "utf8"}))
和公正的优势是什么?fs.writeFileSync(path, JSON.stringify(someObj)});
即使使其异步,也不会增加多行。
Electron不会为此开箱即用。但是,Electron确实为您提供了一种通过app.getPath API以跨平台方式获取存储用户数据的惯用位置的方法。
我想说的三种最常见的实现方法是:
您选择哪一种取决于您应用程序的需求。如果您只需要在渲染器过程中访问此数据,那么我将使用localStorage
。在大多数情况下,似乎您需要同时访问main和renderer中的数据,因此JSON文件很有意义。如果您要处理大量数据或复杂的查询,那么数据库也许是有意义的。我在这里详细介绍了这一点。
可以将数据存储在cookie中;Electron为此提供了一种机制(https://electronjs.org/docs/api/cookies),并且可以在浏览器中检索cookie(Angular:https://docs.angularjs.org/api/ngCookies/service/ $ cookie,React / Other:https://github.com/reactivestack/cookies)
我能够将其与Angularjs一起使用。