Где хранить пользовательские настройки в приложении Electron (Atom Shell)?


Я не могу найти встроенный механизм для хранения пользовательских настроек. Я надеялся, что electron предоставил стандартный метод хранения пользовательских настроек на всех настольных платформах. Если для этого нет прецедента, я могу реализовать его Сам, я просто не хотел сразу переходить к пользовательскому решению. Исследования в интернете довольно редки в этой области. Спасибо!

6 60

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.