web-dev-qa-db-ja.com

Electron(Atom Shell)アプリケーションのどこにユーザー設定を保存しますか?

ユーザー設定を保存する組み込みのメカニズムを見つけることができないようです。 electronがすべてのデスクトッププラットフォームでユーザー設定を保存する標準的な方法を提供することを望んでいました。これに先例がない場合、自分で実装できますが、すぐにカスタムソリューションにジャンプしたくありませんでした。この分野では、オンラインでの調査は非常にまばらです。ありがとう!

69
CodeManiak

各プラットフォームには、異なる種類のデータの異なるデフォルトの場所があります。そのため、プラットフォームに基づいてデフォルトの場所にデータを保存する場合は、 app.getPath(name) をチェックしてください。

nameに関連付けられた特別なディレクトリまたはファイルへのパスを取得します。

また、ユーザーが保存したいデータと、ユーザーのディレクトリを乱雑にしたくないアプリケーションが保存したデータを区別するのにも使用できます。

または、特定のパスにファイルを保存するだけの場合は、 app.setPath(name,path) を使用できます

63
Josh

Electronアプリでこの特定の問題に直面したため、この投稿で 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"
    });

});
41
jviotti

Electronはこのためにすぐに使えるものを提供しません。ただし、Electronでは app.getPath APIを使用して、クロスプラットフォームでユーザーデータを格納する慣用的な場所を取得する方法を提供しています。

これを行う最も一般的な3つの方法は次のとおりです。

  • localStorage(またはHTML5ストレージAPI)
  • フラットなJSONファイル(これは私がしていることであり、私は electron-store を使用しています)
  • indexedDB、neDB、sqliteなどの組み込みデータベース

どちらを選択するかは、アプリのニーズによって異なります。レンダラープロセスでこのデータにのみアクセスする必要がある場合は、localStorageを使用します。ほとんどの場合、メインとレンダラーの両方でデータにアクセスする必要があるように思われるため、JSONファイルは理にかなっています。大量のデータや複雑なクエリを処理している場合は、データベースが理にかなっています。これについてもっと書いた 詳細はこちら

12
ccnokes

LocalStorageはどうですか?ブラウザプロセスからこれらの設定にアクセスする必要がある場合は、おそらく独自に記述する必要があります(または、これを実装するnode.jsライブラリを使用するだけです)

5
Ana Betts

私が見つけた最良の方法は、JSONとして単純なファイルに保存することです。問題は、そのJSONをアプリのディレクトリに保存すると、アプリを更新するときに消去されることです。そのため、現在のオペレーティングシステムのユーザー設定のデフォルトディレクトリに配置する必要があります。ラッキー!!!!!ノード開発者向けのライブラリがあり、userdataディレクトリを見つけるのに役立ちます。モジュールはappdirectoryと呼ばれ、私はそれを数回使用しました。使い方は非常に簡単です。

APPDIRECTORY HERE を参照してください

1
frosty

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で動作させることができました。

0
user6470694