2015-05-26 14 views
55

Kullanıcı ayarlarını depolamak için yerleşik bir mekanizmanın yerini tespit edemiyorum. Elektronun tüm masaüstü platformlarında kullanıcı ayarlarını saklamak için standart bir yöntem sağladığını umuyordum. Bunun için bir örnek yoksa kendimi uygulayabilirim, hemen özel bir çözüme atlamak istemedim. Çevrimiçi ortamda araştırma yapmak bu konuda oldukça seyrek. Teşekkürler!Kullanıcı ayarları Electron (Atom Shell) Uygulamasında nerede saklanır?

+1

Ayarlarımı localStorage kullanarak kaydettim, ancak bunun Electron ile nasıl çalıştığı hakkında daha fazla bilgi edinmek istiyorum. LocalStorage'ı temizlemek ve bir Electron uygulamasının yeniden yüklemesi berbat olduğundan, bunu temizlemiyor gibi görünüyor. –

cevap

53

Her platform farklı veri türleri için farklı varsayılan konumlara sahiptir. Bu nedenle, veri tabanına göre varsayılan konumlarda veri depolamak istiyorsanız, name ile ilişkili özel bir dizinin veya dosyanın yolunu alır.

Ayrıca, kullanıcının kaydetmek istediği verileri birbirinden ayırmak için de kullanabilirsiniz ve uygulama verileriniz, kullanıcı dizinlerini dağıtmak istemediğinizi kaydeder.

Ya da sadece dosyaları depolamak istiyorsanız ben JSON olarak basit dosyasında depolamak için bulduk app.setPath(name,path)

+8

Kabul edildiğinde, "userData" öğesini getPath (name) işlevine geçirebilir ve orada bir yapılandırma dosyası kaydedebilirsiniz. Örneğin, Visual Studio Kodu, bu yöntemi kullanarak yapılandırmasının bir kısmını saklar. Electron'da pencere durumunu kaydetme ve geri yükleme hakkında bir yazı yazdım ve aynı şeyi yapıyorum: http://www.mylifeforthecode.com/saving-and-restoring-window-state-in-electron/. –

+0

Tam olarak aradığım şey, bu özelliğin mevcut olduğunu bilmiyordum! Teşekkürler! – CodeManiak

5

LocalStorage'a ne dersiniz? Bu ayarlara tarayıcı işleminden erişmeniz gerekiyorsa, muhtemelen kendiniz yazmanız gerekir (veya bunu uygulayan bir node.js kitaplığı kullanın)

+2

https://github.com/yeoman/configstore bunu yapmak için güzel bir düğümdür. – Link14

1

iyi şekilde kullanabilirsiniz belirli bir yola reletive. Sorun şu ki, JSON'u uygulama dizininde depolarsanız, uygulamayı güncellediğinizde silinir. Bu yüzden mevcut işletim sistemi için kullanıcı ayarları için varsayılan dizine koymak istiyorsunuz. Neyse ki !!!!! Kullanıcı listesi dizini bulmanıza yardımcı olacak düğüm geliştiricileri için bir kütüphane var. Modül appdirectory olarak adlandırılır ve bunu birkaç kez kullandım. Kullanımı son derece kolaydır.

Benim Elektron uygulamasıyla bu özel sorunla karşı karşıya ettik APPDIRECTORY HERE

+0

ya da sadece 'getPath (userData)' – Dan

34

bakın ve bu Mesaja electron-json-storage adlı bir NPM modülü yazmak için bana ilham verdi.

Bu modül kolayca yazmasına olanak tanır/JSON okumak/app.getPath('userData') den:

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" 
    }); 

}); 
+0

'elektron-json-storage' harika, başka bir seçim' lowdb' – JUO

+6

Sadece meraklı ama elektron-json-storage vs 'nin avantajı ne var? Var someObj = JSON.parse (fs) .readFileSync (yol, {encoding: "utf8"})) 've' fs.writeFileSync (yol, JSON.stringify (someObj)}); 'Hatta bunu bir uyumsuz hale getirmek bile birkaç satırdan fazlasını eklemez. – gman

+2

Ayrıca [elektron ayarları] 'na bakın (https://github.com/nathanbuchar/electron-settings). – k7sleeper

0

yeni modül (bugün yüklenen) Onu anladım ve json dosyaları ayarlamak için basit yöntemler verir önermek istiyorum yoktur

https://github.com/ran-y/electron-storage

Benioku:

bu dizine, geri aramalar ve sözlerini alt dizinleri gerekirse oluşturur ve destekler 0

montaj

$ npm install --save electron-storage 

kullanım

const storage = require('electron-storage'); 

API

storage.get (filePath, cb)

storage.get(filePath, (err, data) => { 
    if (err) { 
    console.error(err) 
    } else { 
    console.log(data); 
    } 
}); 

storage.get (filePath)

storage.get(filePath) 
.then(data => { 
    console.log(data); 
}) 
.catch(err => { 
    console.error(err); 
}); 

depolama.grubu (filePath, veri, cb)

storage.set(filePath, data, (err) => { 
    if (err) { 
    console.error(err) 
    } 
}); 

storage.set (filePath, veriler)

storage.set(filePath, data) 
.then(data => { 
    console.log(data); 
}) 
.catch(err => { 
    console.error(err); 
}); 

storage.isPathExists (yol, cb)

storage.isPathExists(path, (itDoes) => { 
    if (itDoes) { 
    console.log('pathDoesExists !') 
    } 
}); 

storage.isPathExists (yol)

storage.isPathExists(path) 
.then(itDoes => { 
    if (itDoes) { 
    console.log('pathDoesExists !') 
    } 
}); 
7

Electron size herhangi bir şey vermez. Bunun için kutunun Ancak, Electron size kullanıcı verilerini çapraz platformda app.getPath API'sı üzerinden depolamanın idiyomik konumunu elde etmek için bir yöntem sunar. Bu benim yaptığım

  • localStorage (veya herhangi bir HTML5 depolama API)
  • düz JSON dosyası (ve ben için electron-config kullanın:

    Bunu yapmak için 3 en yaygın yolları derdim vardır o) IndexedDB, NEDB veya sqlite

gibi

  • gömülü veritabanı hangileri uygulamanızın gereksinimlerine bağlıdır seçin birini. Bu verilere yalnızca renderer işleminde erişmeniz gerekiyorsa, localStorage kullanıyorum. Çoğu zaman, hem ana hem de işleyicideki verilere erişmeniz gerektiği görülüyor, dolayısıyla bir JSON dosyası mantıklı. Çok fazla veri veya karmaşık sorgulama ile uğraşıyorsanız, belki bir veritabanı mantıklı. Daha fazla in detail here hakkında yazdım.

  • +3

    Neden düşüş var? – ccnokes