इलेक्ट्रॉन (एटम शेल) एप्लिकेशन में उपयोगकर्ता सेटिंग्स को कहाँ संग्रहीत करें?


82

मैं उपयोगकर्ता सेटिंग्स को संग्रहीत करने के लिए एक अंतर्निहित तंत्र का पता लगाने के लिए प्रतीत नहीं कर सकता। मैं उम्मीद कर रहा था कि इलेक्ट्रॉन सभी डेस्कटॉप प्लेटफार्मों में उपयोगकर्ता सेटिंग्स को संग्रहीत करने के लिए एक मानक विधि प्रदान करता है। अगर इसके लिए कोई मिसाल नहीं है, तो मैं इसे खुद ही लागू कर सकता हूं, मैं तुरंत कस्टम समाधान के लिए कूदना नहीं चाहता था। इस क्षेत्र में अनुसंधान ऑनलाइन बहुत विरल है। धन्यवाद!


1
मैंने अपनी सेटिंग्स को लोकलस्टोरेज का उपयोग करके संग्रहीत किया है लेकिन मुझे यह जानने में बहुत दिलचस्पी है कि यह इलेक्ट्रॉन के साथ कैसे काम करता है। चूंकि यह लोकलस्टोरेज को क्लियर करने के लिए गन्दा है और इलेक्ट्रॉन ऐप को रीइंस्टॉल करना इसे साफ नहीं करता है।
ई। सुंदरिन

जवाबों:


75

प्रत्येक प्लेटफ़ॉर्म में विभिन्न प्रकार के डेटा के लिए अलग-अलग डिफ़ॉल्ट स्थान हैं। इसलिए, यदि आप प्लेटफ़ॉर्म के आधार पर डिफ़ॉल्ट स्थानों में डेटा संग्रहीत करना चाहते हैं, तो देखेंapp.getPath(name)

यह एक विशेष निर्देशिका या से जुड़ी फ़ाइल के लिए एक पथ को पुनः प्राप्त करता है name

आप उपयोगकर्ता द्वारा सहेजे जाने वाले डेटा के बीच अंतर करने के लिए भी इसका उपयोग कर सकते हैं, और आपके एप्लिकेशन को डेटा सहेजता है जिसे आप उपयोगकर्ता निर्देशिकाओं को अव्यवस्थित करना नहीं चाहते हैं।

या यदि आप केवल उन फ़ाइलों को स्टोर करना चाहते हैं जो आपके द्वारा उपयोग किए जा सकने वाले किसी विशिष्ट पथ पर रख सकते हैं app.setPath(name,path)


वास्तव में मैं क्या देख रहा था, मुझे नहीं पता था कि यह सुविधा मौजूद थी! धन्यवाद!
कोडमनिंक

42

मैंने अपने इलेक्ट्रॉन ऐप के साथ इस विशेष समस्या का सामना किया है और इस पोस्ट ने मुझे एक एनपीएम मॉड्यूल लिखने के लिए प्रेरित किया है जिसे इलेक्ट्रॉन-जेन-स्टोरेज कहा जाता है ।

यह मॉड्यूल 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-json-storageबहुत बढ़िया है, एक और विकल्प हैlowdb
JUO

6
बस जिज्ञासु लेकिन इलेक्ट्रान-जोंस-स्टोरेज बनाम सिर्फ var someObj = JSON.parse(fs.readFileSync(path, {encoding: "utf8"}))और fs.writeFileSync(path, JSON.stringify(someObj)});यहां तक ​​कि इसे एसिंक्स बनाने से क्या फायदा होगा, यह कुछ पंक्तियों से ज्यादा नहीं जुड़ेगा।
21


महान संसाधन। हालाँकि, ऐसा लगता है कि लायब्रेरी उदाहरणों में आपके जैसे वादों का समर्थन नहीं करती है।
कीथ हॉलिडे

1
आपके द्वारा जोड़ी गई प्रत्येक निर्भरता कारनामों के लिए एक बड़ा सतह क्षेत्र है, फिर भी कोड का एक और टुकड़ा जिसे लगातार अपडेट करना पड़ता है, और यदि आप एक पेशेवर डेवलपर हैं तो आपको कोड का ऑडिट भी करना होगा। यकीनन यह बुरी तरह से अभ्यास है कि कोड की 2 लाइनों को बदलने के लिए पूरी तरह से फूला हुआ पुस्तकालय लें।
gman

15

इलेक्ट्रॉन आपको इसके लिए बॉक्स से बाहर कुछ भी नहीं देता है। हालांकि, इलेक्ट्रॉन आपको app.getPath एपीआई के माध्यम से एक क्रॉस प्लेटफॉर्म तरीके से उपयोगकर्ता डेटा को संग्रहीत करने के मुहावरेदार स्थान प्राप्त करने के लिए एक विधि देता है।

मैं कहूंगा कि ऐसा करने के 3 सबसे सामान्य तरीके हैं:

  • लोकलस्टोरेज (या कोई HTML5 स्टोरेज एपीआई)
  • फ्लैट JSON फ़ाइल (यह वही है जो मैं करता हूं, और मैं इसके लिए इलेक्ट्रॉन-स्टोर का उपयोग करता हूं )
  • IndexedDB, neDB या sqlite जैसे एम्बेडेड डेटाबेस

आप जो चुनते हैं, वह आपके ऐप की जरूरतों पर निर्भर करेगा। यदि आपको रेंडरर प्रक्रिया में केवल इस डेटा तक पहुंचने की आवश्यकता है, तो मैं अभी उपयोग करूंगा localStorage। अधिकांश समय ऐसा लगता है कि आपको मुख्य और रेंडर दोनों में डेटा एक्सेस करने की आवश्यकता है, इसलिए एक JSON फाइल समझ में आती है। यदि आप बहुत सारे डेटा या जटिल क्वेरी के साथ काम कर रहे हैं, तो शायद एक डेटाबेस समझ में आता है। मैंने इसके बारे में और विस्तार से यहां लिखा है


5

LocalStorage के बारे में कैसे? यदि आपको ब्राउज़र प्रक्रिया से इन सेटिंग्स को एक्सेस करने की आवश्यकता है, तो आपको संभवतः अपना खुद का लिखना होगा (या सिर्फ एक नोड का उपयोग करें। जेएस लाइब्रेरी जो इसे लागू करता है)


1

सबसे अच्छा तरीका जो मैंने पाया है वह एक साधारण फ़ाइल में JSON के रूप में संग्रहीत करना है। समस्या यह है कि यदि आप उस JSON को ऐप में स्टोर करते हैं, तो जब आप ऐप को अपडेट करते हैं, तो यह मिटा दिया जाएगा। इसलिए आप इसे वर्तमान ऑपरेटिंग सिस्टम के लिए उपयोगकर्ता सेटिंग्स के लिए डिफ़ॉल्ट निर्देशिका में रखना चाहते हैं। किस्मत से!!!!! नोड डेवलपर्स के लिए एक पुस्तकालय है जो उपयोगकर्ताडेटा निर्देशिका को खोजने में आपकी सहायता करेगा। मॉड्यूल को कहा जाता हैappdirectory , और मैंने इसे कई बार उपयोग किया है। इसे इस्तेमाल करना बेहद आसान है।

यहाँ देखें


1
या बसgetPath(userData)
दान

0

कोई कुकीज़ में डेटा स्टोर कर सकता है; इलेक्ट्रॉन के पास इसके लिए एक तंत्र है ( https://electronjs.org/docs/api/cookies ) और कुकीज़ को ब्राउज़र में पुनर्प्राप्त किया जा सकता है (कोणीय: https://docs.angularjs.org/api/ngCookies-service/ $ कुकीज़, प्रतिक्रिया / अन्य: https://github.com/reactivestack/cookies )

मैं इसे एंगुलरज के साथ काम करने में सक्षम था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.