web-dev-qa-db-fra.com

Où stocker les paramètres utilisateur dans l'application Electron (Atom Shell)?

Je n'arrive pas à trouver un mécanisme intégré pour stocker les paramètres utilisateur. J'espérais qu'électron fournissait une méthode standard pour stocker les paramètres utilisateur sur toutes les plates-formes de bureau. S'il n'y a pas de précédent pour cela, je peux le mettre en œuvre moi-même, je ne voulais tout simplement pas passer immédiatement à une solution personnalisée. La recherche en ligne est assez rare dans ce domaine. Merci!

62
CodeManiak

Chaque plate-forme a des emplacements par défaut différents pour différents types de données. Donc, si vous souhaitez stocker des données dans des emplacements par défaut en fonction de la plate-forme, consultez app.getPath(name)

Il récupère un chemin vers un répertoire ou un fichier spécial associé à name.

Vous pouvez également l'utiliser pour différencier les données que l'utilisateur souhaite sauvegarder et les données que votre application enregistre pour lesquelles vous ne souhaitez pas encombrer les répertoires des utilisateurs.

Ou si vous souhaitez simplement stocker des fichiers liés à un chemin spécifique, vous pouvez utiliser le fichier app.setPath(name,path)

60
Josh

J'ai rencontré ce problème particulier avec mon application Electron et cet article m'a incité à écrire un module NPM appelé electron-json-storage .

Ce module permet d’écrire/lire facilement du JSON vers/depuis 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"
    });

});
40
jviotti

Electron ne vous donne rien en dehors de la boîte pour cela. Cependant, Electron vous donne une méthode pour obtenir l'emplacement idiomatique du stockage des données utilisateur sur plusieurs plates-formes via l'API app.getPath .

Je dirais que les 3 manières les plus courantes de faire ceci sont:

  • localStorage (ou toute API de stockage HTML5) 
  • fichier JSON plat (c'est ce que je fais et j'utilise electron-config pour cela)
  • base de données intégrée telle que IndexedDB, neDB ou sqlite

Le choix que vous choisirez dépendra des besoins de votre application. Si vous devez uniquement accéder à ces données dans le processus de rendu, utilisez plutôt localStorage. La plupart du temps, il semble que vous ayez besoin d'accéder aux données à la fois dans le rendu principal et dans le rendu, de sorte qu'un fichier JSON est logique. Si vous traitez beaucoup de données ou d'interrogations complexes, alors une base de données est logique. J'ai écrit à ce sujet plus en détail ici .

9
ccnokes

Que diriez-vous de LocalStorage? Si vous devez accéder à ces paramètres à partir du processus du navigateur, vous devez probablement écrire le vôtre (ou simplement utiliser une bibliothèque node.js qui l'implémente)

5
Paul Betts

Le meilleur moyen que j'ai trouvé est de le stocker dans un simple fichier au format JSON. Le problème est que si vous stockez ce JSON dans le répertoire de l'application, il disparaît lorsque vous mettez à jour l'application. Donc, vous voulez le mettre dans le répertoire par défaut pour les paramètres utilisateur pour le système d'exploitation actuel. HEUREUSEMENT!!!!! Il existe une bibliothèque pour les développeurs de nœuds qui vous aidera à trouver le répertoire userdata. Le module s'appelle appdirectory et je l'ai utilisé plusieurs fois. Il est extrêmement facile à utiliser. 

Voir APPDIRECTORY ICI

1
frosty

On pourrait stocker des données dans des cookies; Electron dispose d’un mécanisme ( https://electronjs.org/docs/api/cookies ) et les cookies peuvent être récupérés dans le navigateur (Angular: https://docs.angularjs.org/api/ngCookies/service/ $ cookies, React/Other: https://github.com/reactivestack/cookies )

J'ai pu le faire fonctionner avec Angularjs.

0
user6470694