Ich kann anscheinend keinen integrierten Mechanismus zum Speichern von Benutzereinstellungen finden. Ich hatte gehofft, dass Electron eine Standardmethode zum Speichern von Benutzereinstellungen auf allen Desktop-Plattformen bietet. Wenn es dafür keinen Präzedenzfall gibt, kann ich ihn selbst implementieren. Ich wollte einfach nicht sofort zu einer benutzerdefinierten Lösung springen. Online-Forschung ist in diesem Bereich ziemlich spärlich. Vielen Dank!
80
Antworten:
Jede Plattform verfügt über unterschiedliche Standardspeicherorte für unterschiedliche Datentypen. Wenn Sie also Daten basierend auf der Plattform an Standardspeicherorten speichern möchten, checken Sie aus
app.getPath(name)
Es ruft einen Pfad zu einem speziellen Verzeichnis oder einer Datei ab, die mit verknüpft sind
name
.Sie können es auch verwenden, um zwischen Daten zu unterscheiden, die der Benutzer speichern möchte, und Daten, die Ihre Anwendung speichert, damit Sie die Benutzerverzeichnisse nicht überladen.
Oder wenn Sie nur Dateien speichern möchten, die relativ zu einem bestimmten Pfad sind, können Sie die verwenden
app.setPath(name,path)
quelle
Ich hatte dieses spezielle Problem mit meiner Electron-App und dieser Beitrag hat mich dazu inspiriert, ein NPM-Modul namens Electron-JSON-Storage zu schreiben .
Dieses Modul ermöglicht das einfache Schreiben / Lesen von JSON zu / von
app.getPath('userData')
:quelle
electron-json-storage
ist fantastisch, eine andere Wahl istlowdb
var someObj = JSON.parse(fs.readFileSync(path, {encoding: "utf8"}))
undfs.writeFileSync(path, JSON.stringify(someObj)});
Selbst wenn es asynchron gemacht wird, werden nicht mehr als ein paar Zeilen hinzugefügt.Electron gibt Ihnen dafür nichts "out of the box". Electron bietet Ihnen jedoch eine Methode, um den idiomatischen Speicherort für Benutzerdaten plattformübergreifend über die API app.getPath abzurufen .
Ich würde sagen, die 3 häufigsten Möglichkeiten, dies zu tun, sind:
Welches Sie auswählen, hängt von den Anforderungen Ihrer App ab. Wenn Sie nur im Renderer-Prozess auf diese Daten zugreifen müssen, würde ich nur verwenden
localStorage
. Meistens müssen Sie auf die Daten sowohl im Haupt- als auch im Renderer zugreifen, daher ist eine JSON-Datei sinnvoll. Wenn Sie mit vielen Daten oder komplexen Abfragen zu tun haben, ist eine Datenbank möglicherweise sinnvoll. Ich habe hier ausführlicher darüber geschrieben .quelle
Wie wäre es mit LocalStorage? Wenn Sie über den Browserprozess auf diese Einstellungen zugreifen müssen, müssen Sie wahrscheinlich Ihre eigenen schreiben (oder einfach eine node.js-Bibliothek verwenden, die dies implementiert).
quelle
Der beste Weg, den ich gefunden habe, ist es, es in einer einfachen Datei als JSON zu speichern. Das Problem ist, dass wenn Sie diesen JSON im App-Verzeichnis speichern, er beim Aktualisieren der App gelöscht wird. Sie möchten es also in das Standardverzeichnis für Benutzereinstellungen für das aktuelle Betriebssystem stellen. GLÜCKLICHERWEISE!!!!! Es gibt eine Bibliothek für Knotenentwickler, mit deren Hilfe Sie das Benutzerdatenverzeichnis finden können. Das Modul heißt
appdirectory
und ich habe es mehrmals benutzt. Es ist sehr einfach zu bedienen.Siehe APPDIRECTORY HIER
quelle
getPath(userData)
Man könnte Daten in Cookies speichern; Electron hat einen Mechanismus dafür ( https://electronjs.org/docs/api/cookies ) und die Cookies können im Browser abgerufen werden (Angular: https://docs.angularjs.org/api/ngCookies/service/ $ Cookies, Reagieren / Andere: https://github.com/reactivestack/cookies )
Ich konnte es mit Angularjs zum Laufen bringen.
quelle