icon - electronjs browserwindow
¿Dónde almacenar la configuración del usuario en la aplicación Electron(Atom Shell)? (6)
Parece que no puedo encontrar un mecanismo integrado para almacenar la configuración del usuario. Esperaba que el electrón proporcionara un método estándar para almacenar la configuración del usuario en todas las plataformas de escritorio. Si no hay un precedente para esto, puedo implementarlo yo mismo, simplemente no quería saltar a una solución personalizada de inmediato. La investigación en línea es bastante escasa en esta área. ¡Gracias!
¿Qué tal LocalStorage? Si necesita acceder a esta configuración desde el proceso del navegador, probablemente necesite escribir la suya (o simplemente usar una biblioteca node.js que implemente esto)
Cada plataforma tiene diferentes ubicaciones predeterminadas para diferentes tipos de datos.
Por lo tanto, si desea almacenar datos en ubicaciones predeterminadas basadas en la plataforma, consulte
app.getPath(name)
Recupera una ruta a un directorio especial o archivo asociado con el
name
.
También puede usarlo para diferenciar entre los datos que el usuario desea guardar y los datos que guarda su aplicación que no desea saturar los directorios de los usuarios.
O bien, si solo desea almacenar archivos reletivos en una ruta específica, puede usar
app.setPath(name,path)
Electron no te da nada fuera de la caja para esto. Sin embargo, Electron le proporciona un método para obtener la ubicación idiomática de almacenamiento de datos de usuario en una plataforma cruzada a través de la API app.getPath .
Yo diría que las 3 formas más comunes de hacer esto son:
- localStorage (o cualquier API de almacenamiento HTML5)
- archivo JSON plano (esto es lo que hago, y utilizo electron-store para ello)
- base de datos integrada como IndexedDB, neDB o sqlite
El que elija dependerá de las necesidades de su aplicación.
Si solo necesita acceder a estos datos en el proceso del renderizador, entonces solo usaría
localStorage
.
La mayoría de las veces parece que necesita acceder a los datos tanto en el principal como en el renderizador, por lo que un archivo JSON tiene sentido.
Si está tratando con muchos datos o consultas complejas, entonces tal vez una base de datos tenga sentido.
Escribí sobre esto más
detalladamente aquí
.
La mejor manera que he encontrado es almacenarlo en un archivo simple como JSON.
El problema es que si almacena ese JSON en el directorio de la aplicación, cuando actualice la aplicación, se eliminará.
Por lo tanto, desea colocarlo en el directorio predeterminado para la configuración del usuario para el sistema operativo actual.
¡¡¡¡¡POR SUERTE!!!!!
Hay una biblioteca para desarrolladores de nodos que lo ayudará a encontrar el directorio de datos de usuario.
El módulo se llama
appdirectory
, y lo he usado varias veces.
Es extremadamente fácil de usar.
Me he enfrentado a este problema particular con mi aplicación Electron y esta publicación me inspiró a escribir un módulo NPM llamado electron-json-storage .
Este módulo permite escribir / leer fácilmente JSON en / desde
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"
});
});
Uno podría almacenar datos en cookies; Electron tiene un mecanismo para ello ( https://electronjs.org/docs/api/cookies ) y las cookies se pueden recuperar en el navegador (Angular: https://docs.angularjs.org/api/ngCookies/service/ $ cookies, React / Other: https://github.com/reactivestack/cookies )
Pude hacerlo funcionar con Angularjs.