Где хранить пользовательские настройки в приложении Electron (Atom Shell)?
Я не могу найти встроенный механизм для хранения пользовательских настроек. Я надеялся, что electron предоставил стандартный метод хранения пользовательских настроек на всех настольных платформах. Если для этого нет прецедента, я могу реализовать его Сам, я просто не хотел сразу переходить к пользовательскому решению. Исследования в интернете довольно редки в этой области. Спасибо!
6 ответов:
каждая платформа имеет различные местоположения по умолчанию для различных типов данных. Итак, если вы хотите хранить данные в местах по умолчанию на основе платформы, проверьте
app.getPath(name)
он получает путь к специальному каталогу или файлу, связанному с
name
.вы также можете использовать его, чтобы различать данные, которые пользователь хочет сохранить, и данные, которые ваше приложение сохраняет, что вы не хотите загромождать каталоги пользователей.
или если вы просто хотите для хранения файлов относительно определенный путь, вы можете использовать
app.setPath(name,path)
я столкнулся с этой конкретной проблемой с моим электронным приложением, и этот пост вдохновил меня написать модуль NPM под названием electron-json-storage.
этот модуль позволяет легко писать/читать JSON в/с
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" }); });
Электрон не дает вам ничего из коробки для этого. Однако Electron дает вам метод для получения идиоматического местоположения хранения пользовательских данных кросс-платформенным способом через приложение.getPath API.
Я бы сказал, что 3 наиболее распространенных способа сделать это:
- localStorage (или любой HTML5 storage API)
- плоский файл JSON (это то, что я делаю, и я использую electron-config за это)
- встроенный база данных, как IndexedDB, neDB или sqlite
что вы выберете, будет зависеть от потребностей вашего приложения. Если вам нужно только получить доступ к этим данным в процессе визуализации, то я бы просто использовал
localStorage
. В большинстве случаев кажется, что вам нужно получить доступ к данным как в основном, так и в рендерере, поэтому файл JSON имеет смысл. Если вы имеете дело с большим количеством данных или сложных запросов, то, возможно, база данных не имеет смысла. Я писал об этом подробно здесь.
Как насчет LocalStorage? Если вам нужно получить доступ к этим настройкам из процесса браузера, вам, вероятно, нужно написать свой собственный (или просто использовать узел.JS библиотека, которая реализует это)
лучший способ, который я нашел, это сохранить его в простом файле как JSON. Проблема в том, что если вы сохраните этот JSON в приложении dir, то при обновлении приложения он будет уничтожен. Поэтому вы хотите поместить его в каталог по умолчанию для пользовательских настроек для текущей операционной системы. К счастью!!!!! Существует библиотека для разработчиков узлов, которая поможет вам найти каталог userdata. Модуль называется
appdirectory
, и я использовал его несколько раз. Он чрезвычайно прост в использовании.посмотреть КАТАЛОГ ПРИЛОЖЕНИЙ ЗДЕСЬ
можно хранить данные в cookies; Electron имеет механизм для этого (https://electronjs.org/docs/api/cookies) и куки могут быть получены в браузере (угловой:https://docs.angularjs.org/api/ngCookies/service/$cookies, React / Other:https://github.com/reactivestack/cookies)
Я смог заставить его работать с Angularjs.