ユーザー設定を保存するための組み込みメカニズムが見つからないようです。私は、electronがすべてのデスクトッププラットフォームにわたってユーザー設定を保存するための標準的な方法を提供することを望んでいました。この前例がない場合は、自分で実装できますが、すぐにカスタムソリューションにジャンプしたくありませんでした。オンラインでの調査は、この分野ではかなりまばらです。ありがとう!
ユーザー設定を保存するための組み込みメカニズムが見つからないようです。私は、electronがすべてのデスクトッププラットフォームにわたってユーザー設定を保存するための標準的な方法を提供することを望んでいました。この前例がない場合は、自分で実装できますが、すぐにカスタムソリューションにジャンプしたくありませんでした。オンラインでの調査は、この分野ではかなりまばらです。ありがとう!
回答:
プラットフォームごとに、さまざまな種類のデータに対してさまざまなデフォルトの場所があります。したがって、プラットフォームに基づいてデフォルトの場所にデータを保存する場合は、チェックアウトしてくださいapp.getPath(name)
に関連付けられた特別なディレクトリまたはファイルへのパスを取得しますname
。
また、これを使用して、ユーザーが保存したいデータと、ユーザーのディレクトリを乱雑にしたくないアプリケーションが保存したデータを区別することもできます。
または、特定のパスに関連するファイルを保存するだけの場合は、
app.setPath(name,path)
私は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"
});
});
electron-json-storage
素晴らしいです、別の選択肢はlowdb
var someObj = JSON.parse(fs.readFileSync(path, {encoding: "utf8"}))
とfs.writeFileSync(path, JSON.stringify(someObj)});
でもそれは非同期数行以上追加しないとなっては。
Electronは、このために箱から出して何も提供しません。ただし、Electronは、app.getPath APIを介して、クロスプラットフォームの方法でユーザーデータを保存する慣用的な場所を取得する方法を提供します。
これを行うための3つの最も一般的な方法は次のとおりです。
どちらを選択するかは、アプリのニーズによって異なります。レンダラープロセスでこのデータにアクセスするだけでよい場合は、を使用しますlocalStorage
。ほとんどの場合、メインとレンダラーの両方でデータにアクセスする必要があるように思われるため、JSONファイルは理にかなっています。大量のデータや複雑なクエリを処理している場合は、データベースが理にかなっているかもしれません。これについては、ここで詳しく説明しました。
私が見つけた最良の方法は、JSONとして単純なファイルに保存することです。問題は、そのJSONをアプリディレクトリに保存すると、アプリを更新するとワイプされてしまうことです。したがって、現在のオペレーティングシステムのユーザー設定用のデフォルトディレクトリに配置する必要があります。ラッキー!!!!! userdataディレクトリを見つけるのに役立つノード開発者向けのライブラリがあります。モジュールはと呼ばれappdirectory
、私はそれを数回使用しました。非常に使いやすいです。
ここのAPPDIRECTORYを参照してください
getPath(userData)
データをCookieに保存することができます。Electronにはそのためのメカニズムがあり(https://electronjs.org/docs/api/cookies)、ブラウザでCookieを取得できます(Angular:https://docs.angularjs.org/api/ngCookies/service/ $クッキー、React /その他:https://github.com/reactivestack/cookies)
Angularjsで動作させることができました。