Nie mogę znaleźć wbudowanego mechanizmu do przechowywania ustawień użytkownika. Miałem nadzieję, że firma electron zapewniła standardową metodę przechowywania ustawień użytkownika na wszystkich platformach komputerowych. Jeśli nie ma precedensu, mogę to wdrożyć samodzielnie, po prostu nie chciałem od razu przeskakiwać do niestandardowego rozwiązania. Badania online są dość rzadkie w tej dziedzinie. Dzięki!
82
Odpowiedzi:
Każda platforma ma różne domyślne lokalizacje dla różnych rodzajów danych. Jeśli więc chcesz przechowywać dane w domyślnych lokalizacjach opartych na platformie, sprawdź
app.getPath(name)
Pobiera ścieżkę do specjalnego katalogu lub pliku skojarzonego z
name
.Możesz go również użyć do rozróżnienia między danymi, które użytkownik chce zapisać, a danymi zapisanymi przez aplikację, które nie chcesz zaśmiecać katalogów użytkowników.
Lub jeśli chcesz po prostu przechowywać pliki ponownie w określonej ścieżce, możesz użyć rozszerzenia
app.setPath(name,path)
źródło
Spotkałem się z tym konkretnym problemem z moją aplikacją Electron i ten post zainspirował mnie do napisania modułu NPM o nazwie electron-json-storage .
Ten moduł umożliwia łatwe zapisywanie / odczytywanie JSON do / z
app.getPath('userData')
:źródło
electron-json-storage
jest super, inny wybór tolowdb
var someObj = JSON.parse(fs.readFileSync(path, {encoding: "utf8"}))
afs.writeFileSync(path, JSON.stringify(someObj)});
nawet ustawienie asynchronizacji nie dodałoby więcej niż kilka linii.Electron nie daje do tego niczego po wyjęciu z pudełka. Jednak Electron zapewnia metodę uzyskiwania idiomatycznej lokalizacji przechowywania danych użytkownika w sposób międzyplatformowy za pośrednictwem interfejsu API app.getPath .
Powiedziałbym, że 3 najczęstsze sposoby to:
Który wybierzesz, będzie zależeć od potrzeb Twojej aplikacji. Jeśli potrzebujesz tylko dostępu do tych danych w procesie renderowania, po prostu użyłbym
localStorage
. W większości przypadków wydaje się, że potrzebujesz dostępu do danych zarówno w głównym, jak i rendererze, więc plik JSON ma sens. Jeśli masz do czynienia z dużą ilością danych lub złożonymi zapytaniami, być może baza danych ma sens. Dokładniej o tym pisałem tutaj .źródło
A co z LocalStorage? Jeśli chcesz uzyskać dostęp do tych ustawień z procesu przeglądarki, prawdopodobnie musisz napisać własne (lub po prostu użyć biblioteki node.js, która to implementuje)
źródło
Najlepszym sposobem, jaki znalazłem, jest zapisanie go w prostym pliku jako JSON. Problem polega na tym, że jeśli przechowujesz ten JSON w katalogu aplikacji, to po zaktualizowaniu aplikacji zostanie on usunięty. Więc chcesz umieścić go w domyślnym katalogu dla ustawień użytkownika dla bieżącego systemu operacyjnego. SZCZĘŚLIWIE!!!!! Istnieje biblioteka dla programistów węzłów, która pomoże Ci znaleźć katalog danych użytkownika. Moduł nosi nazwę
appdirectory
i używałem go kilka razy. Jest niezwykle łatwy w użyciu.Zobacz APPDIRECTORY TUTAJ
źródło
getPath(userData)
Można by przechowywać dane w plikach cookies; Electron ma do tego mechanizm ( https://electronjs.org/docs/api/cookies ), a pliki cookie można pobrać w przeglądarce (Angular: https://docs.angularjs.org/api/ngCookies/service/ $ pliki cookie, React / Inne: https://github.com/reactivestack/cookies )
Udało mi się to zrobić z Angularjs.
źródło