Parece que no puedo encontrar un mecanismo integrado para almacenar la configuración del usuario. Esperaba que electron 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!
82
Respuestas:
Cada plataforma tiene diferentes ubicaciones predeterminadas para diferentes tipos de datos. Entonces, si desea almacenar datos en ubicaciones predeterminadas según la plataforma, consulte
app.getPath(name)
Recupera una ruta a un directorio especial o archivo asociado con
name
.También puede usarlo para diferenciar entre los datos que el usuario desea guardar y los datos que guarda su aplicación y que no desea saturar los directorios de usuarios.
O si solo desea almacenar archivos relacionados con una ruta específica, puede usar el
app.setPath(name,path)
fuente
Me enfrenté a este problema particular con mi aplicación Electron y esta publicación me inspiró a escribir un módulo de NPM llamado electron-json-storage .
Este módulo permite escribir / leer JSON fácilmente a / desde
app.getPath('userData')
:fuente
electron-json-storage
es impresionante, otra opción eslowdb
var someObj = JSON.parse(fs.readFileSync(path, {encoding: "utf8"}))
efs.writeFileSync(path, JSON.stringify(someObj)});
incluso hacerlo asincrónico no agregaría más que unas pocas líneas?Electron no le da nada fuera de la caja para esto. Sin embargo, Electron le brinda un método para obtener la ubicación idiomática de almacenamiento de datos de usuario en una forma multiplataforma a través de la API app.getPath .
Yo diría que las 3 formas más comunes de hacer esto son:
El que elija dependerá de las necesidades de su aplicación. Si solo necesita acceder a estos datos en el proceso de renderizado, simplemente 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 con más detalle aquí .fuente
¿Qué tal LocalStorage? Si necesita acceder a estas configuraciones desde el proceso del navegador, probablemente necesite escribir las suyas propias (o simplemente usar una biblioteca node.js que implemente esto)
fuente
La mejor forma 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á. Entonces, desea ponerlo 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 le 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.Ver APDIRECTORIO AQUÍ
fuente
getPath(userData)
Se pueden 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.
fuente